如何通过实例在非静态方法中调用静态方法

时间:2017-06-24 21:42:45

标签: c# static instance

我知道我们可以使用类name.method,但我想知道是否有办法通过实例来完成它。你能给我一个例子吗?我问的原因是因为我的教授说:

  

您必须使用使用静态的调用来调用扩展方法   呼叫表单和实例调用表单

1 个答案:

答案 0 :(得分:1)

通过编辑,这是关于扩展方法,然后变得更容易!

使用与以下相同的示例:

bool hasValue1 = s.HasValue(); // use the instance syntax
bool hasValue2 = StringExtensions.HasValue(s); // use the static syntax

请注意,这些是100%相同;一旦编译成IL,就无法确定使用了哪种形式。

简答:" no",根据CS0176:

  

CS0176会员' {name}'无法使用实例引用访问;使用类型名称来限定它

稍微长一点的答案:如果你真的想要这样做,那么你可能正在寻找扩展方法;例如:

static class StringExtensions
{
    public static bool HasValue(this string value)
    {
        return !string.IsNullOrEmpty(value);
    }
}
class Program
{
    static void Main()
    {
        string s = /* some string or null reference */
        bool hasValue = s.HasValue();
    }
}