C# Can';t在C中向int添加扩展方法#
我试图向int添加一个名为TryParseNull的扩展方法,该方法将字符串作为输入,如果成功,则返回转换后的整数;如果字符串不是有效整数,则返回null 我遵循了本文中的doubleMe示例: 我的扩展方法声明如下: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 (
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()
您不能将静态方法添加到您不控制的类型。