无法从实现中访问接口中的 C# 静态方法 class
C# Static method in interface cannot be accessed from the implementing class
接口 IA
中的方法 SomeStaticMethod
不能直接从实现该接口的 class A
访问。我错过了什么吗?
public interface IA {
public static int SomeStaticMethod() => 4;
}
public class A : IA {
public static void Bidule() {
SomeStaticMethod(); //DO NOT COMPILE
IA.SomeStaticMethod(); //COMPILES
}
}
如果将接口 IA
更改为 class,它就可以工作。
public class IA {
public static int SomeStaticMethod() => 4;
}
public class A : IA {
public static void Bidule() {
SomeStaticMethod(); //NOW it works
}
}
一个class可以实现多个接口。如果您在两个接口中定义了具有相同签名的静态方法,编译器将无法决定应该调用其中的哪一个。这是大多数 OO 语言试图避免多重继承的(许多)原因之一,虽然它可能很有用。
接口 IA
中的方法 SomeStaticMethod
不能直接从实现该接口的 class A
访问。我错过了什么吗?
public interface IA {
public static int SomeStaticMethod() => 4;
}
public class A : IA {
public static void Bidule() {
SomeStaticMethod(); //DO NOT COMPILE
IA.SomeStaticMethod(); //COMPILES
}
}
如果将接口 IA
更改为 class,它就可以工作。
public class IA {
public static int SomeStaticMethod() => 4;
}
public class A : IA {
public static void Bidule() {
SomeStaticMethod(); //NOW it works
}
}
一个class可以实现多个接口。如果您在两个接口中定义了具有相同签名的静态方法,编译器将无法决定应该调用其中的哪一个。这是大多数 OO 语言试图避免多重继承的(许多)原因之一,虽然它可能很有用。