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

Unable to Access Extension Method in Main Method

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

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();
    }

请尝试帮助我谢谢...

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();
    }
}

它会将整数转换为 stringint

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

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

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

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