使用带有.
运算符的扩展方法,即使对象为空也总是会被调用,而不会抛出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");
}
}
为什么扩展方法在这种情况下没有被调用?这是一个模糊的特性吗?
a.b();
没有出现NullReferenceException
? - Shaharyara
上没有任何被调用的内容。 - Paulo Morgado