美文网首页.NET
C#语法糖($)(?.)(??)

C#语法糖($)(?.)(??)

作者: EvanWay | 来源:发表于2017-06-28 13:41 被阅读0次

    实际上是C# 6.0对string.Format的改进

    将字符串文本标识为内插字符串($)

    根据微软的例子来看:

    using System;
    
    public class Example
    {
       public static void Main()
       {
          string name = "John";
          string greeting = $"Hello, {name}!";
          Console.WriteLine(greeting);
       }
    }
    

    相当于原先的string.Format这种必须使用占位符,极容易出错:

    string name = "John";
    string str = string.Fromat("Hello,{0}!",name);
    

    而使用$则不容易出现错误,可以这样写:

    string name = "John";
    string str = $"Hello,{name}!";
    

    update:2017-7-20
    新增语法糖:(?.)
    这也是C#6.0的语法,这叫Null-Conditional Operator(null条件运算符)
    我们经常需要判断对象是否为null(不判断呢就会报异常System.NullReferenceException之类的),我们一般像这样:

    List<string> list = null;
    if (list != null)
    {
        string[] strArr = list.ToArray();
    }
    

    或者这样

    List<string> list = null;
    string[] strArr = (list != null ? list.ToArray() : null);
    

    使用这个null条件运算符就可以这样简单的完成这件事了

    List<string> list = null;
    string[] strArr = list?.ToArray();
    

    解释一下,当 list 为 null 时就不进行后面的ToArray(),返回null,当 list 不为 null 就ToArray();
    这里要注意一下,前面strArr这个得是个可null的值


    既然说到这个,就来多个(??)
    ?? 运算符称作 null 合并运算符。 如果此运算符的左操作数不为 null,则此运算符将返回左操作数;否则返回右操作数。
    演示一下:

    int? num = null;//前面设定了个可空的int,后面想null时变为0就好
    int num1 = num ?? 0;
    

    相关文章

      网友评论

        本文标题:C#语法糖($)(?.)(??)

        本文链接:https://www.haomeiwen.com/subject/avrucxtx.html