如果我尝试使用相同的参数声明静态和非静态方法,编译器将返回错误:类型“Test”已经定义了一个名为“Load”的成员,具有相同的参数类型。
class Test
{
int i = 0;
public int I
{
get { return i; }
set { i = value; }
}
public bool Load(int newValue)
{
i = newValue;
return true;
}
public static Test Load(int newValue)
{
Test t = new Test();
t.I = newValue;
return t;
}
据我所知,这两种方法不能混合使用,非静态方法在对象上调用,而静态方法在类上调用,那么为什么编译器不允许这样的事情,有没有办法做类似的事情?
最佳答案
如果您的 Test
类有这样的方法:
public void CallLoad()
{
Load(5);
}
编译器不知道要使用哪个 Load()。类成员完全允许调用没有类名的静态方法。
至于如何做类似的事情,我猜你最好的办法是给方法起相似但不同的名字,比如将 static
方法重命名为 LoadTest()
或 LoadItem()
。
关于c# 不能声明具有相同参数的静态和非静态方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14316305/