1.可空类型:表示在值类型的正常取值范围内再加上一个null值
(1)结构:可空类型是泛型结构Nullable<T>的实例,其声明为:public struct Nullable<T> where T : struct,语法T?是Nullable<T>的简写形式,这两种形式是等效的:
Nullable<int> myNullableInt = new Nullable<int>(),等价于int ? myNullableInt = null;
(2)可空类型包含以下实例成员:
1).HasValue:只读属性,判断是否有值,如果当前值非空,返回true,否则返回false
2).Value:只读属性,如果当前值非空,可以正常访问,否则说明Value不包含有意义的值,此时访问Value时会抛出异常InvalidOperationException
3).GetValueOrDefault():实例方法,如果当前值非空(HasValue为true),返回Vlaue的值,否则返回T类型的默认值(即私有字段value的默认值)
4).GetValueOrDefault (T defaultValue):实例方法,如果当前值非空(HasValue为false),返回Vlaue的值,否则返回默认值defaultValue
2.空合并操作符
空合并即 ?? 他会对左右两个操作数进行判断:如果左边的书不为null,则返回左边的书,如果左边的书为null,则返回右边的书,这个操作符可以用于可空类型和引用类型,但是不能用于值类型,因为??
会将左边的数和null进行比较,值类型是不能与null比较的。
例子:
int ? nullable = null;
int ? nullhasvalue = 1;
int temp = nullable??12 = 12;
int temp1 = nullhasvalue??123 = 1;
3.匿名方法
就是没有名字的方法,所以只能在定义的时候调用,其他时候无法调用。
class Program
{
delegate void VoteDelegate(string name);
static void Main(string[] args)
{
VoteDelegate votedelegate = delegate(string nickename) { Console.WriteLine("{0}来投票了", nickename); };
votedelegate("张三");
Console.Read();
}
}
以上代码的好处:使用了匿名方法,则不需要单独定义一个vote方法,减少了代码行数,更有利于程序阅读