C# 9 参数实现空验证 返回

IT新闻 老数据
5258

用法在参数后面加上!

void M(string name!) {
…
}

将被翻译成:

void M(string name!) {
if (name is null) {
把新的ArgumentNullException (nameof(名称));
}
}
//c#编译器为该形参发出标准的空检查代码

 

规则非常简单明了。


在测试计划中,我们看到了以下泛型的场景:

void M<T>(T值!){}是OK的

void M<T>(T值!)其中T: struct{}是一个错误

void M<T>(T值!)其中T: unmanaged{}是一个错误

void M<T>(T值!)其中T: notnull{}是OK的

void M<T>(T值!)其中T:类{}是OK的

void M<T>(T值!)其中T: SomeStruct{}是一个错误

void M<T>(T值!)其中T: someeclass{}是OK的

该设计的一个缺陷是,它没有提供对验证属性的支持,因为value参数只是隐含的。在这个场景中,Orthoxerox建议将bang操作符应用于set关键字。

public Foo Foo {get; set!;}public Bar Bar {
    get { return bar; }
    set! { bar = value; DoSomethingElse();
 }
}


热忱回答0