为什么我收到一个错误,指出字符串不包含'Contains'的定义

时间:2013-05-16 15:55:31

标签: c# .net

我有以下简单的方法:

        public static bool IsErrorMessage(String error)
    {
        var isErrorMessage = error.Left(40).Contains("ErrorMessage",StringComparison.CurrentCulture);
        return isErrorMessage;
    }

但是我收到一个错误,指出字符串不包含'Contains'的定义,VS想要使用System.Linq.Enumerable.Contains。

使用.NET Framework 4.5,C#,VS 2010,当然我有一个使用System指令。

2 个答案:

答案 0 :(得分:6)

String.Contains没有带有两个参数的重载。如果您想使用StringComparison,请使用IndexOf

bool isErrorMessage = error.Left(40).IndexOf("ErrorMessage", StringComparison.CurrentCulture) > -1;

答案 1 :(得分:2)

由于两个参数,它看起来更喜欢LINQ扩展方法,因为String :: Contains只有一个参数。

我认为您需要充实扩展方法以发现问题。这是一个可以帮助您入门的编译示例:

public static class StringExtensions
{
    public static string Left(this string s, int count)
    {
        // your method
        return "";
    }
    public static bool Contains(this string s, string contains, StringComparison comp)
    {
        // your method
        return true;
    }
}

public class Test
{
    public static bool IsErrorMessage(String error)
    {
        var isErrorMessage = error.Left(40).Contains("ErrorMessage", StringComparison.CurrentCulture);
        return isErrorMessage;
    }
}