C#其它特性(可空类型,空合并操作符,匿名方法)

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方法,减少了代码行数,更有利于程序阅读

 

posted @ 2019-10-16 21:34  zwj鹿港小镇  阅读(200)  评论(0编辑  收藏  举报