zoukankan      html  css  js  c++  java
  • C#语法糖($)(?.)(??)

    内插字符串($)

    实际上是C# 6.0对string.Format的改进,将字符串文本标识为内插字符串($)
    根据微软的例子来看:

     1 using System;
     2 
     3 public class Example
     4 {
     5    public static void Main()
     6    {
     7       string name = "John";
     8       string greeting = $"Hello, {name}!";
     9       Console.WriteLine(greeting);
    10    }
    11 }

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

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

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

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


    新增语法糖:(?.)

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

    1 List<string> list = null;
    2 if (list != null)
    3 {
    4     string[] strArr = list.ToArray();
    5 }

    或者这样:

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

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

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

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

    null合并运算符(??)

    ?? 运算符称作 null 合并运算符。 如果此运算符的左操作数不为 null,则此运算符将返回左操作数;否则返回右操作数。
    演示一下:

    1 int? num = null;//前面设定了个可空的int,后面想null时变为0就好
    2 int num1 = num ?? 0;
  • 相关阅读:
    C#
    C#
    ssh学习笔记
    (已解决)Could not open '/var/lib/nova/mnt/*/volume-*': Permission denied
    RPCVersionCapError: Requested message version, 4.17 is incompatible. It needs to be equal in major version and less than or equal in minor version as the specified version cap 4.11.
    如何在linux下安装idea
    The system has no LUN copy license
    调整mysql数据库最大连接数
    mysql数据库编码问题
    cinder支持nfs快照
  • 原文地址:https://www.cnblogs.com/EvanWay/p/8134014.html
Copyright © 2011-2022 走看看