1,属性:(自动属性)
public int Age {get;set;}
2,属性:(属性访问权限)
public int Age {get;private set;}
3,方法参数(命名参数)
public void Fun(string s1,string s2);
......
//调用时,传参
Fun("S1的值",“S2的值”)
Fun(s2:"S2在前",s1:“S1在后”)
4,构造函数:
静态构造函数:在第一次调用类的任何成员之前执行静态构造函数
静态构造函数没有访问修饰符,无实参的构造函数和静态构造函数可以在一个类中同时定义
Class A
{
private static int i;
static A(){i=0;}
public A( ){}
...
}
5,readonly,const
readonly允许把一个字段设置为常量,但还需要执行一些计算来确定它的初始值,可以在构造函数中赋值,其他地方会报错
Class A
{
readonly int i;
A()
{
i=10;
}
....
}
6,匿名类型Var
7,结构体,值类型,使用new运算符并不在堆中分配内存,不支持继承,使用前所有的元素必须初始化。
Struct A
{
int i;
string s;
}
A a1=new A();
a1.i=10;
a1.s="10";
A a2;
a2.i=10;
a2.s="10";
8,partial关键字用法:可用在class,struct,interface前面
9,索引器
class A
{
public int[] Arr;
public A()
{
Arr=new int[10];
}
public int this[int index]
{
get { return Arr[index]; }
set { Arr[index] = value; }
}
}
......
aa[2] = 30;
MessageBox.Show(aa.Arr[2].ToString());
10,yield语句
yield return;
yield break;
11,default初始化泛型变量
12,接口、委托的协变和逆变
13,元组:合并不同类型的对象
Tuple
public Tuple<int, string> Fun(int i, string s)
{
return Tuple.Create<int, string>(i,s);
}
......
var v = Fun(1,"haha");
MessageBox.Show(v.Item1+v.Item2);
14,is检查对象是否与特定的类型兼容
15,as执行引用类型的显示类型转换
16,sizeof可以确定值类型需要的长度
17,typeof返回一个表示特定类型的system.type对象
18,可空类型? 空合并运算??
??
如何第一个操作数不是null,整个表达式等于第一个操作数的值
如何第一个操作数等于null,整个表达式等于第二个操作数的值
int? a=null;
int b;
b=a??10;
a=3;
b=a??10
19,operator运算符的重载
20,Lambda表达式与委托直接相关,当参数是委托类型时,就可以使用Lambda表达式实现委托引用的方法