C# 9 参数实现空验证 返回
IT新闻
老数据
5258
悬赏:5 飞吻
用法在参数后面加上!
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();
}
}