Bugün bir C# sınıfının bir arabirimi hem örtülü hem de açık bir şekilde devralabileceğini görüyorum. Bu beni şaşırtıyor. C# bu şekilde çalışırsa, bir örnek farklı şekilde başvuruda bulunduğunda farklı davranabilir. kod çalışır ve çıkışNeden Bir C# Sınıfı Bir Arabirimden Hem İçten Hem de Açık Olarak Miras Olabilir mi?
do something implicitly
do something explicitly
Üstü
interface IFoo
{
void DoSomething();
}
class Foo : IFoo
{
#region IFoo Members
public void DoSomething()
{
Console.WriteLine("do something implicitly");
}
#endregion
#region IFoo Members
void IFoo.DoSomething()
{
Console.WriteLine("do something explicitly");
}
#endregion
}
Foo f = new Foo();
f.DoSomething();
((IFoo)f).DoSomething();
C# bu tasarım davranışının tutarsızlık yapmak inanıyoruz. Belki bir C# sınıfının bir arabirimden örtük veya açık bir şekilde miras alması zorunludur, ancak her ikisi de değil.
neden C# şekilde tasarlandığını bir nedeni var mı?
İkisini de yapabileceğinizi fark etmemiştim. Bu biraz aptalca görünüyor ... –
Bu aptalca değil. Cevapları oku. –
Çift-yeniden etiketleme konusunda üzgünüm, "açık arabirim-üyesi-uygulama" etiketini bir etiket olarak eklemeye çalışıyordum (bu, kullandığınız özelliğin adıdır), ancak görünüşe göre bu etiket çok uzun olacaktır. :) – Rytmis