你好我想为Char
类创建一个扩展方法,作为Char.IsDigit()
方法(但当然会识别不同类型的字符)。
我写了这个:
namespace CharExtensions
{
public static class CompilerCharExtension
{
public static Boolean IsAddOp(this Char c)
{
return c.Equals('+') || c.Equals('-');
}
}
}
工作正常,但这并不完全是我的意思。 这种扩展应该这样使用:
using CharExtensions;
char x:
...
if(x.IsAddOp())
Console.WriteLine("Add op found");
虽然我会这样:
using CharExtensions;
char x;
...
if(Char.IsAddOp(x))
Console.WriteLine("Add op found");
感谢所有能帮助我的人。
答案 0 :(得分:3)
您不能这样做,因为扩展方法总是需要对象的实例。 见here
扩展方法被定义为静态方法,但是使用实例方法语法调用。
答案 1 :(得分:0)
你的问题提到了一个类的静态方法。您实际上想要为Char
类定义静态方法,而不是向char
实例添加扩展名。要定义静态方法,您必须访问原始类like
class SomeClass {
public int InstanceMethod() { return 1; }
public static int StaticMethod() { return 42; }
}
现在您可以将StaticMethod
用作:
SomeClass.StaticMethod();
然后,您必须访问Microsoft .net框架代码才能将IsAddOp(x)
方法添加到Char
类。实际上你用你所说的那个定义扩展的方法是错误的..你不要试图定义Extension
方法..你试着定义Static
方法。