1 自动属性
public class Student
{
public int ID{get;set;}
}
2 隐式类型(类型推断)
关键字 var(在编译的时候已经确定变量的类型了,编译时把推断的类型替换掉var。并不是弱类型)
作用:只是方便程序员
var i=5;//int
注意:
不能作为类成员的类型
不能作为方法的参数
不能作为返回值
(只能作为局部变量的类型推断)
3 匿名类型
var p1=new {Id=1,Name="coco",Age=22};匿名类中的成员是只读的seal类型的
数组
var intArray=new []{2,3,4,5};
var atrArray=new []{"Hellp","coco"};
var objArray=new[]{new {Name="coco",Age=12},new {Name="bingbing",Age=95}};
var a=intArray[0];
4
对象与集合初始化器
Student stu=new Student(){Id=1,Name="coco",Age=99}//更方便给对象赋值
集合初始化器
List<int>num=new List<int>(){0,1,23,4};
list<student>stus=new list<student>(){new student{Id=1,Name="coco",Age=123},new student{Id=2,Name="kkk",Age=17}};
5 扩展方法(linq中用的很多)
扩展方法主要是在类中另写一个静态的方法,用户不用更改类就可以直接点出来。一般不会用到
声明扩展方法的步骤:
类必须是static,方法是static,第一个参数是扩展的对象,前面个标注的是this(this 参数类型 参数名)。
使用扩展方法必须保证扩展方法已经在当前代码中(即要有相同的命名空间)
扩展方法不属于扩展类的成员,也访问不到要扩展的类的私有变量
eg:
//定义
public static class StingExt
{
pulic static bool isEmail(this string str)
{
return Regex.IsMatch(str,@"^\[email protected]\w+\.\w+$");
}
}
//使用
string email="[email protected]"
cw{emial.IsEmail();}