.始终调用带有运算符的扩展方法,即使对象为空而不抛出NullReferenceException.通过使用运算符,?.它永远不会调用.例如:
using System;
public class Program
{
public static void Main()
{
A a = null;
a.b(); // works
a?.b(); // doesn't work
}
}
public class A { }
public static class ext
{
public static void b(this A a)
{
Console.WriteLine("I'm called");
}
}
Run Code Online (Sandbox Code Playgroud)
为什么在这种情况下不调用扩展方法?这是一个ambiguos功能?
Mar*_*cki 15
你的表达式是?.b(),它使用 ?运算符转换为等效:
if(a != null)
{
a.b();
}
Run Code Online (Sandbox Code Playgroud)
所以这就是你的方法不被调用的原因.
| 归档时间: |
|
| 查看次数: |
392 次 |
| 最近记录: |