在主方法中无法访问扩展方法

时间:2018-08-02 04:04:33

标签: c# c#-4.0

我正在使用扩展方法将字符串转换为整数。但是我无法在主要方法中访问扩展方法。我做错了什么。我的代码在下面

public static class ConvertIntExtensionMethod
{
    public static int ConvertToInt(this int str) {
        int value;
        value = Convert.ToInt32(str);
        return value;
    }
}

static void Main(string[] args)
    {
        string str = "100";
        //int i = 10;
        //bool result = i.IsGreaterThan(100);
        int result = str.ConvertIntExtensionMethod(); //Here is the problem
        Console.WriteLine(result);
        Console.ReadLine();
    }

请尝试帮助我谢谢您...

3 个答案:

答案 0 :(得分:1)

str不包含任何称为ConvertIntExtensionMethod()的成员。您需要这样做:

public static class ConvertIntExtensionMethod
{
    public static int ConvertToInt(this string str)
    {
        int value;
        value = Convert.ToInt32(str);
        return value;
    }
}

class Program
{
    static void Main(string[] args)
    {
        string str = "5";
        //int i = 10;
        //bool result = i.IsGreaterThan(100);
        int result = ConvertIntExtensionMethod.ConvertToInt(str); //Here is the problem
        Console.WriteLine(result);
        Console.ReadLine();
    }
}

它将整数从string转换为int

答案 1 :(得分:1)

  1. 扩展方法必须在顶级静态类中定义,看来您的ConvertIntExtensionMethod类是嵌套类
  2. 如果要将此方法添加到string,则参数的类型必须为this string
  3. 致电str.ConvertToInt()而不是str.ConvertIntExtensionMethod()

答案 2 :(得分:-2)

我在扩展方法中输入了错误的参数类型。主方法传递字符串值,但扩展方法参数为整数。这是我发现的问题。

扩展方法中的更新代码如下所示

public static int ConvertToInt(this string str)
{
    int value;
    value = Convert.ToInt32(str);
    return value;
}