zoukankan      html  css  js  c++  java
  • C#6.0一些特性

    1.自动属性初始化的改进

    声明属性时可以直接进行初始化

    public int id {get;set;}=10;
    

     自动属性是省去了get和set内部的过程,而直接用set;get;这样的语句代替,

    把这个过程交给了系统,系统也为这个属性动态生成一个对应的字段。

    下面代码是一个自己控制get和set方法的示例:

            private int myVar;
    
            public int MyProperty
            {
                get { return myVar; }
                set { myVar = value; }
            }
    这里最简单的逻辑。

    演示:可以看到对属性赋的初值是有效的,并且正确的输出了。

    2.静态类的引入

    以控制台应用程序为例,以前在控制台输出内容时写的代码是:

    Console.WriteLine("hello world");
    

     这里的Console就是属于System命名空间下的一个静态类。

    现在可以这样用,在引入命名空间的地方,把静态类引入。

    using static System.Console;

    这里需要注意的是,使用static的关键字,静态类的类名要求的全名。

    在代码中就能这样用了:

    WriteLine("世界,你好");
    

     省去了静态类的开头。个人理解是为了代码的冗余。

    3.string.Format的改进

    这里直接更改了它的形式,已经不再使用string.Format这种形式了。

    为了形成对比,下面是两个示例的比较。

    原:

    string name="喜欢";
    string t1=string.Format("{0,10}",name);

    对{0,10}的理解,0表示匹配第0个参数,10表示向左补全,使字符串长度不满10的时候左以空格补全。如果原字符串长度大于10,则这个参数将无效,如果是负数则表示右补全。

    如果是{0:yyyy-mm-dd}以冒号隔开的表示以后面的格式显示数据。

    新:

    string name="喜欢";
    string t1=$"{0,10}";

    地方直接以"$"代替了string.Format,并且把参数写在{}大括号里,不再需要占位符。

    4.集合初始化器

    之前我一直是使用这样的方式初始化的,

    Dictionary<string,int> dic=new Dictionary<string,int>{{"1",1},{"2",2}};
    

    现在可以是:

    Dictionary<string,int> dic=new Dictionary<string,int>{["1"]=1,["2"]=2};

    个人感觉方便了一点点,在直观性方面也比较好看。

    5.null表达式

    之前只知道可空值类型,像int?这样的格式,正常情况下,值类型是不可以为null,只有引用类型才能为null;

    string[] test=new string[]{"xihuan","xiaoai"};
    int? length1=test[0]?.Length;
    int? result=test[1]?.Length??

    int d=  "sfsd"?.Length??5;

    ??双问号操作符,左边为null则取值为右边,左边不为null则为取值为左边。

  • 相关阅读:
    nginx 学习
    java 数组转字符串(以逗号分隔开)
    索引命名规范
    java常见的设计模式
    java中的堆、栈浅解。
    Oracle忘记System密码怎么办?
    端口被占用,怎么解决?
    Spring Mvc学习之路
    svg了解一下
    推荐几款基于vue的使用插件
  • 原文地址:https://www.cnblogs.com/xiaoai123/p/6961923.html
Copyright © 2011-2022 走看看