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;
  • 相关阅读:
    由"跨域"引出的一个终极思想(jsonp)
    SQLAlchemy 使用教程
    rbac-基于角色的权限控制系统(8种常用场景再现)
    Django中间件 (middleware)
    tcp粘包问题原因及解决办法
    细说【json&pickle】dumps,loads,dump,load的区别
    python面向对象--快速入门
    python三大器(装饰器/生成器/迭代器)
    django神器 <自定义过滤器filter 和 标签tag>
    python 基础数据类型汇总
  • 原文地址:https://www.cnblogs.com/EvanWay/p/8134014.html
Copyright © 2011-2022 走看看