使用扩展方法实现枚举类型与数值类型的相互转换

本文详细介绍了C#中的扩展方法,包括如何为类型定义扩展方法,以及如何使用这些方法进行枚举类型的转换。通过示例代码展示了扩展方法的实用性和灵活性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  简单的说,扩展方法可以为某个类型T的所有实例都扩展出N个方法,并且T可以是值类型。

  为类型T扩展方法的步骤:

    1. 定义一个静态类

    2. 往类中添加静态方法,其第一个参数为this T anyName,后面再是实际的方法参数

  为int扩展方法Add示例:    

View Code
namespace ExtensionMethods
{
static class Extension
{
public static int Add(this int i, int value)
{
return i + value;
}
}
}


using ExtensionMethods;
……
int i = 1;
int total = i.Add(100);

  对于数据库中的状态、类型等字段,在程序中往往会用枚举来表示,或许扩展方法可以帮助我们完成二者的相互转换——  

View Code
#region 定义枚举类型

enum MoneyType
{
dollar = 0,
rmb = 1
}

enum Sex
{
male = 0,
female = 1
}

#endregion

static class Extention
{
#region 为枚举类型扩展方法:ToInt

public static int ToInt(this MoneyType t)
{
return (int)t;
}
public static int ToInt(this Sex t)
{
return (int)t;
}

#endregion

#region 为int扩展方法:To%枚举类型%

public static MoneyType ToMoneyType(this int i)
{
return (MoneyType)i;
}


public static Sex ToSex(this int i)
{
return (Sex)i;
}

#endregion
}

  使用:    

View Code
            int sexValue = 1;
Sex s = sexValue.ToSex();
int monetTypeValue = MoneyType.dollar.ToInt();

 

  参考:

    扩展方法:http://msdn.microsoft.com/zh-cn/library/bb383977.aspx

 

转载于:https://www.cnblogs.com/quanzi/archive/2012/02/25/2367662.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值