感叹号的作用

感叹号 !在c#中主要有三个作用:

  1. 不等于号,
  2. 逻辑运算符“非”,
  3. null 容忍操作符

1、不等于号

var a = 1;
var b = 2;

if(a!=b)
{
   // do something
}

2、逻辑运算符“非”

将“真”变成 “假”,或将“假”变成“真”

var a = true;

a = !a;
// a 为 假

3、null 容忍操作符

C#8 的新特性

编译器会提示引用类型在使用前是否赋值,如果未赋值直接使用,则会给出波浪线提示,

如果不想出现波浪线提示,一种做法是写防御代码

if(aa!=null)
{
  throw new Exception("不能为空");
}

另一种做法是忽略警告

还有一种做法是null 容忍操作符,如下所示

var date = obj!.date

这样将不会出现波浪线,

但是,这里要特别注意,

编译检查是保证代码健壮性的工具,使用了null容忍操作符,也就是告诉编译器,不用检查它,

所以你必须百分百保证这个是有值的