l--*_*''' 5 .net c# null operators visual-studio
我最近发现:
if (Foo() != null)
{ mymethod(); }
Run Code Online (Sandbox Code Playgroud)
可以改写成
Foo?.mymethod()
Run Code Online (Sandbox Code Playgroud)
可以用类似的方式重写以下内容吗?
if (Foo == null)
{ throw new Exception()}
Run Code Online (Sandbox Code Playgroud)
mis*_*rop 26
从 .NET 6 开始,您可以使用ArgumentNullException.ThrowIfNull()静态方法:
void HelloWorld(string argumentOne)
{
ArgumentNullException.ThrowIfNull(argumentOne);
Console.WriteLine($"Hello {argumentOne}");
}
Run Code Online (Sandbox Code Playgroud)
是的,从C#7开始,您可以使用Throw Expressions
var firstName = name ?? throw new ArgumentException (nameof(name), "Mandatory parameter");
Run Code Online (Sandbox Code Playgroud)
C# 6 中没有类似的时尚语法。
但是,如果您愿意,可以使用扩展方法简化空检查...
public static void ThrowIfNull(this object obj)
{
if (obj == null)
throw new Exception();
}
Run Code Online (Sandbox Code Playgroud)
用法
foo.ThrowIfNull();
Run Code Online (Sandbox Code Playgroud)
或者改进它以显示空对象名称。
public static void ThrowIfNull(this object obj, string objName)
{
if (obj == null)
throw new Exception(string.Format("{0} is null.", objName));
}
foo.ThrowIfNull("foo");
Run Code Online (Sandbox Code Playgroud)
我不知道你为什么会..
public Exception GetException(object instance)
{
return (instance == null) ? new ArgumentNullException() : new ArgumentException();
}
public void Main()
{
object something = null;
throw GetException(something);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8648 次 |
| 最近记录: |