您可以添加您调用的扩展方法,如静态方法吗?

时间:2010-10-07 00:59:53

标签: c# extension-methods

根据Microsoft的说法,“扩展方法是一种特殊的静态方法,但它们被称为扩展类型的实例方法”。

有没有办法添加一个它调用的扩展方法,就好像它是一个静态方法?或者做一些具有相同效果的其他事情?

编辑: 我的意思是“就像它是扩展类上的静态方法一样”。 抱歉模棱两可。

2 个答案:

答案 0 :(得分:13)

  

根据Microsoft的说法,“扩展方法是一种特殊的静态方法,但它们被称为扩展类型的实例方法”。

是的,扩展方法是静态方法。它们都可以作为静态方法以正常方式调用,作为它们“扩展”类型的扩展实例方法,甚至可以作为空引用的扩展方法调用它们。

例如:

public static class Extensions {
    public static bool IsNullOrEmpty(this string theString) {
        return string.IsNullOrEmpty(theString);
    }
}

// Code elsewhere.
string test = null;
Console.WriteLine(test.IsNullOrEmpty()); // Valid code.
Console.WriteLine(Extensions.IsNullOrEmpty(test)); // Valid code.

修改

  

有没有办法添加一个它调用的扩展方法,就好像它是一个静态方法?

你的意思是你想要打电话,例如string.MyExtensionMethod()?在这种情况下,不,没有办法做到这一点。

答案 1 :(得分:4)

扩展方法静态方法。你不需要做任何事情。

唯一可以将扩展方法与任何其他静态方法区分开来的方法是,它可以被调用,就好像它是一个实例方法另外,通常被称为静态方法。