• C# 3.0的新特性(一)


    特性一:类型的智能推演
        C#语言属于静态语言,类型的推演实际是由编辑器来完成;
        public void Main(){
           var i = 1;
           var s = "dfdsf";
        }
        编辑器依据你的赋值自动给出类型,但是你不能赋NULL值;
       另外
        public void Main(){
           var i = 1; 
            i= “哦我认为任务”;
         } 这样也是不被允许的,因为i已经是整型了;


    特性二:CLR类型的扩张功能
        比如string这个类型在3.0之前,我们只能使用它提供的方法;无法继承,因为它是密封类型;
        public static Class Helper {
             public static bool IsIn(this object a, IEunmerable b){
                   foreach(object o in b){
                       if(a == o)
                           return true;
                   }
                   return false;
            }
       }
       Console.Write("sdsd".IsIn(new string[]{"sasa","sdsd"}));
      需要注意的是,必须是静态类和静态方法;

    特性三:自动属性
         public class Helper{
               public string Name{get; set;}
               public string Sex{get; private set;}
               public Helper(string sex){
                    this.Sex = sex;
               }
        }
        自动属性其实没什么用,无非就是少记两个快捷键;不过和之前不一样的是,,可以在方法体内部指定访问级别;如上例,Sex属性只能内部访问;

    特性四:对象初始化器
         var o = new Helper("男") {Name = "Gaby"};
         3.0新增的这个功能,貌似在 C++里就有了;也没多大用处;这里注意一点,构造函数的要优先于初始化器;

    特性五:集合的初始化
         var list = new List<Helper>{
             new Helper("男") {Name = "Gaby"};
         }

    特性六:Lamada表达式
        这是很有用的功能;具体使用有点像匿名方法;格式如下:
        (参数)=>{表达式或方法体}

      delegate void Printer(string a,string b)
      TestClass{
        Main()
       {
        Printer p = delegate(string a,string b){
               Console.Write(a+b);
          };
          p("hellow","world");
          Printer p1 = (a,b)=>a+b;
          p1"hellow","world");
        }
    }







     

  • 相关阅读:
    canvas,画个纸飞机
    时钟
    去除滚动条,内容仍然可以滚动
    鼠标指针移入移出改变图片透明度
    Mysql数据库优化总结
    一次利用nginx漏洞的木马事件
    一个批量删除大表数据的shell小脚本
    MegaCli监控raid卡磁盘信息以及相关的shell脚本
    MYSQL delete语句不支持别名?
    一次Mysql数据库服务器磁盘空间满引发的写入和同步问题
  • 原文地址:https://www.cnblogs.com/pojia/p/1102158.html
Copyright © 2020-2023  润新知