C# Can';t在C中向int添加扩展方法#

C# Can';t在C中向int添加扩展方法#,c#,C#,我试图向int添加一个名为TryParseNull的扩展方法,该方法将字符串作为输入,如果成功,则返回转换后的整数;如果字符串不是有效整数,则返回null 我遵循了本文中的doubleMe示例: 我的扩展方法声明如下: public static class IntExtensions { public static int? TryParseNull(this string s) { int dummy; int? value; if (

我试图向int添加一个名为TryParseNull的扩展方法,该方法将字符串作为输入,如果成功,则返回转换后的整数;如果字符串不是有效整数,则返回null

我遵循了本文中的doubleMe示例:

我的扩展方法声明如下:

public static class IntExtensions {
    public static int? TryParseNull(this string s) {
        int dummy;
        int? value;
        if (int.TryParse(s, out dummy)) {
            value = dummy;
        }
        else {
            value = null;
        }
        return value;
    }
}
但是当我试图这样使用它时,编译器抱怨说它不知道什么是TryParseNull。我试了以下两种方法

int? myNum = int?.TryParseNull("1");
int? myNum = int.TryParseNull("1");
编辑:我认为问题在于参数
这个字符串s
,但是我传入了一个字符串,所以我不确定如何更正它


编辑2:从下面的答案中,我可以看出问题所在,但是有没有办法让语法
int.TryParseNull(“1”)

扩展方法在其“this”参数的实例上工作,而不是在类型上

而不是

int? myNum = int?.TryParseNull("1");
试一试

编辑: 顺便说一句,您也可以使用'this'参数作为第一个参数静态调用该方法

int? myNum = IntExtensions.TryParseNull("1");

扩展方法处理其“this”参数的实例,而不是类型

而不是

int? myNum = int?.TryParseNull("1");
试一试

编辑: 顺便说一句,您也可以使用'this'参数作为第一个参数静态调用该方法

int? myNum = IntExtensions.TryParseNull("1");
试一试

您的方法是扩展
string
,而不是
int?
。它确实返回
int?

Try


您的方法是扩展
string
,而不是
int?
。它确实返回
int?

int
是框架提供的类型,并且您添加的扩展方法最初不是
int
实现的一部分,因此您不能直接使用该类型调用它,您需要像其他人指出的那样在
int
的实例上调用它。

int
是框架提供的类型,您添加的扩展方法最初不是
int
实现的一部分,因此您不能直接使用该类型调用它,正如其他人所指出的,您需要在
int
的实例上调用它。

根据您的编辑,您正在尝试向现有类添加静态方法。见下文:


简而言之,您不能,扩展方法只适用于实例。

根据您的编辑,您正在尝试向现有类添加静态方法。见下文:


简而言之,您不能,扩展方法只适用于实例。

“1”。TryParseNull()
您不能将静态方法添加到您不控制的类型。
“1”。TryParseNull()
您不能将静态方法添加到您不控制的类型。