struct
我们经常会专门声明一个类来存放数据,但是C#其实已经提供了一个东西来存放数据,那就是struct.
struct声明出来的结构体是一个值类,这里要注意.
struct的用法和class差不多
struct 结构名{属性或者字段}
栗子时间
struct Func
{
public string Method1;
public string Method2;
public string Method3;
public string Method4;
}
这是一个Func结构体,带有四个字段Method1/2/3/4.
调用里面的成员也和类差不多
class Program
{
static void Main(string[] args)
{
Func func;
func.Method1 = "Plus";
}
}
像这样,可以对结构里的内容进行访问.注意因为struct声明出来的结构体是一个值类,所以没有像平常一样有实例化这个步骤.
enum
在我讲事件的那一篇文章有这么一个地方用到了switch
switch (mode)
{
case 1:
isEven.CalculationEvent += Method.Plus;
isEven.IsEvenMethod(a, b);
break;
case 2:
isEven.CalculationEvent += Method.Subtract;
isEven.IsEvenMethod(a, b);
break;
case 3:
isEven.CalculationEvent += Method.Multiply;
isEven.IsEvenMethod(a, b);
break;
default:
isEven.CalculationEvent += Method.Divide;
isEven.IsEvenMethod(a, b);
break;
}
重点在case这里,case1,case2,case3,我看一眼我看不出来123代表的是什么意思,但是如果换成下面这个方式这串代码就好读多了
switch (mode)
{
case CalcMethod.Plus:
isEven.CalculationEvent += Method.Plus;
isEven.IsEvenMethod(a, b);
break;
case CalcMethod.Subtract:
isEven.CalculationEvent += Method.Subtract;
isEven.IsEvenMethod(a, b);
break;
case CalcMethod.Multiply:
isEven.CalculationEvent += Method.Multiply;
isEven.IsEvenMethod(a, b);
break;
default CalcMethod.Divide:
isEven.CalculationEvent += Method.Divide;
isEven.IsEvenMethod(a, b);
break;
}
1234被换成了文字,看一眼就能大概明白这个case到底是干啥的.
那么究竟怎么把1234换成这些文字?答案是enum
enum和struct也有近似的用法
enum 枚举名{枚举项}
让我们来看看究竟是什么代码才能支持把123换成那些文字
enum CalcMethod
{
Plus,
Subtract,
Multiply,
Divide
}
在枚举中,每一项若没赋值,从上到下自动+1,现在Plus就是0,Subtract为1,然后继续往下.
枚举里也可以自己赋值.若是我现在给Subtract赋值为11,Multiply则为12.Plus还是默认值0.