从类和接口继承
本文关键字:继承 接口 | 更新日期: 2023-09-27 18:03:11
我写了一个简单的类,如:
public class Pusher : IPusher,Hub
{
}
我得到编译错误(Interface definition is expected
),因为我们应该首先继承类,然后其他接口。
但是public class Pusher : Hub,IPusher
和public class Pusher : IPusher,Hub
有什么区别
我们可以在方法参数中看到这样的对流也有默认值
public void ExampleMethod(int required, string optionalstr = "default string")
我们应该定义默认值parameter(参数中的最后一个)
与CLR有关吗?
不,这与CLR无关,这些是语言特定的限制。
我不能确切地找到为什么继承的类必须放在接口之前,但这样做可能是为了清晰。类只能继承另一个类,但它可以实现多个接口。如果知道被继承的类总是放在首位,就更容易看到发生了什么。
可选参数的排序具有更实用的性质。c#不允许空参数作为可选参数的占位符,所以你必须把它们放在最后(否则只能用命名参数调用方法)。你不能像这样调用这个方法:
ExampleMethod(42, );
使用可选值调用,只需从调用中省略它:
ExampleMethod(42);
因此,如果可选参数不是最后一个,它就不是可选的,因为你不能这样调用:
ExampleMethod(, 42);
在第一种情况下,这只是一种惯例。为了更好的可读性和简单的编译时检查,我希望这个类应该放在第一位。但争论是另一回事。假设您为第一个参数指定默认值,而不是为最后一个参数指定默认值。编译器应该如何检测你想说什么
的例子:int函数c(int a, int b = 10, int c)然后调用func(10,20);这是干什么用的?那是不可能的
编辑(例2):int funcc (int a, int b = 1, int c, int d = 2, int e)and call func(1,2,3,4);在这种情况下,不清楚哪个变量被省略了。可以是B和d。