扩展方法的空引用异常

tdb*_*ett -2 c# extension-methods nullreferenceexception

我有一个扩展方法ParseItemsToIntegers,它是一个字符串数组的扩展方法,我正在使用它,就像使用任何扩展一样.

var ids = ChkBoxSelected.ParseItemsToIntegers();
Run Code Online (Sandbox Code Playgroud)

我观察到的行为是,如果ChkBoxSelected为null,它将毫无问题地调用扩展方法,但是在扩展方法中它会在空字符串数组上抛出空引用异常.

它是如何解决null上的扩展方法的?

为什么ChkBoxSelected在调用扩展方法时它没有抛出空引用异常?

Ser*_*rvy 6

它不会抛出NRE,因为扩展方法不是实例方法,无论它们看起来多么像实例方法.正如您在定义方法时所表明的那样,它实际上是一种静态方法.将null值作为第一个参数传递给静态方法时,不会抛出NRE ,它只传入一个null值,静态方法可以随意执行任何操作.