静态上下文错误

时间:2010-09-14 20:22:05

标签: c#

我无法弄清楚下面会出现什么样的静态错误:

public bool OptionsMatch(Item item, ItemFavorite itemFavorite)
{
    bool isSame = true;

    switch (item.DispType)
    {
        case DispType.Dropdown:
        case DispType.Radio:
            isSame = String.Contains(item.Value);
            break;
        case DispType.ImageList:
            isSame = ListValuesMatch(item, itemFavorite);
            break;
    }

    return isSame;
}

错误:无法在静态上下文中访问非静态方法“包含”

DispType是一个枚举。其余的都是非静态的具体类型实例,并且底层类也不是包含此方法的静态。

4 个答案:

答案 0 :(得分:6)

string.Contains不是静态的,它是一个实例方法;即它在字符串的实例上调用,如下所示:

"something".Contains(item.Value);

这是因为Contains需要两个对象 - 引用字符串和要搜索的字符串。你只提供了一个(要搜索的字符串)但不提供在哪里查看。

答案 1 :(得分:2)

以下是发生的问题:

isSame = String.Contains(item.Value);

Contains是一个实例方法:

isSame = "foo".Contains(item.Value);

或者反过来取决于你想要做什么:

isSame = item.Value.Contains("foo");

答案 2 :(得分:0)

String.Contains不是有效的静态方法。你想要评估什么?

答案 3 :(得分:0)

Contains上的方法System.String是一种实例方法。您正尝试使用System.String类型进行访问,这是一个错误。你需要一个字符串实例。