1、可空类型:引用类型的默认值为null,值类型的默认值为0。但有时候会需要值类型的值为null,故而有了非空类型。
eg、(1)、
public static void Main()
{
int? a = null;//可空类型,并没有int?这种类型,这只是C#提供的一种方便形式,编译器会自动去转化
Console.WriteLine (a);
Nullable<int> b = null;//编译器最终转化的形式,Nullable是一个泛型类
Console.WriteLine (b);
}
(2)、Nullable有两个属性,HasValue与Value。
public static void test22()
{
double? n = 9.9;
Console.WriteLine (result1);
//第一种写法
double result1 = 0;
if (n.HasValue) //判断可空类型是否为空,返回值为bool类型
{
result = n.Value ;//获取可空类型的值,返回为值类型
}
Console.WriteLine (result2);
//第二种写法
//转换为用三目运算符
double result2 = n.HasValue ? n.Value : 0;
//第三种写法
//合并可空类型(这种写法只能用在这里)
//如果n为空,则result=0.25;如果c不为空,这result等于n的值
double result3 = n ?? 0.25;
Console.WriteLine (result3);
}
2、匿名方法:没有名字的方法,建立在委托之上。委托包装匿名方法。
匿名方法实现:1、声明委托
2、定义匿名方法(绑定委托)
3、通过调用委托来调用匿名方法
eg、
public delegate int Mydelegate1(int w,int q);
public static void Main()
{
Mydelegate1 d=delegate (int w,int q)
{
return w+q;
}; //大括号后要加分号,因为这是一行代码
Console.WriteLine(d(2,3)); <
eg、(1)、
public static void Main()
{
int? a = null;//可空类型,并没有int?这种类型,这只是C#提供的一种方便形式,编译器会自动去转化
Console.WriteLine (a);
Nullable<int> b = null;//编译器最终转化的形式,Nullable是一个泛型类
Console.WriteLine (b);
}
(2)、Nullable有两个属性,HasValue与Value。
public static void test22()
{
double? n = 9.9;
Console.WriteLine (result1);
//第一种写法
double result1 = 0;
if (n.HasValue) //判断可空类型是否为空,返回值为bool类型
{
result = n.Value ;//获取可空类型的值,返回为值类型
}
Console.WriteLine (result2);
//第二种写法
//转换为用三目运算符
double result2 = n.HasValue ? n.Value : 0;
//第三种写法
//合并可空类型(这种写法只能用在这里)
//如果n为空,则result=0.25;如果c不为空,这result等于n的值
double result3 = n ?? 0.25;
Console.WriteLine (result3);
}
2、匿名方法:没有名字的方法,建立在委托之上。委托包装匿名方法。
匿名方法实现:1、声明委托
2、定义匿名方法(绑定委托)
3、通过调用委托来调用匿名方法
eg、
public delegate int Mydelegate1(int w,int q);
public static void Main()
{
Mydelegate1 d=delegate (int w,int q)
{
return w+q;
}; //大括号后要加分号,因为这是一行代码
Console.WriteLine(d(2,3)); <