zoukankan      html  css  js  c++  java
  • c#语法糖代码——自动属性, 匿名类型,对象与集合初始化器,扩展方法

    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,@"^w+@w+.w+$");
    }
    }
    //使用
    string email="zxh@itcast.cn"
    cw{emial.IsEmail();}

  • 相关阅读:
    【AtCoder】ARC097 (C
    【51nod】1123 X^A Mod B (任意模数的K次剩余)
    【洛谷】P4207 [NOI2005]月下柠檬树
    【POJ】2454.Jersey Politics
    【POJ】2069.Super Star
    【POJ】2420.A Star not a Tree?(模拟退火)
    【POJ】1026.Cipher
    【POJ】3270.Cow Sorting
    【POJ】1286.Necklace of Beads
    【POJ】1067.取石子游戏
  • 原文地址:https://www.cnblogs.com/lv-sally/p/4729213.html
Copyright © 2011-2022 走看看