interface IBar { void Hidden(); }
class Foo : IBar { public void Visible() { /*...*/ } void IBar.Hidden() { /*...*/ } }
class Program
{
static T CallHidden1<T>(T foo) where T : Foo
{
foo.Visible();
((IBar)foo).Hidden(); //Cast required
return foo;
}
static T CallHidden2<T>(T foo) where T : Foo, IBar
{
foo.Visible();
foo.Hidden(); //OK
return foo;
}
}
有什麼不同(CallHidden1與CallHidden2)的實際編譯的代碼? T:Foo和T:Foo,IBar(如果Foo實現IBar)在訪問顯式實現的接口成員之間還有其他區別嗎?明確實現的接口和通用的限制