在C#中隐式和显式实现接口有什么区别?
什么时候应该使用隐式?什么时候应该使用显式?
是否有任何利弊和/或缺点?
Microsoft的官方指南(来自第一版框架设计指南)声明不建议使用显式实现,因为它会给代码带来意外行为.
我认为这个指南在IoC之前的时候是非常有效的,当你没有作为接口传递时.
任何人都可以触及这方面吗?
我想修改一个结构的字段,该结构在一个数组内,而不必设置整个结构.在下面的示例中,我想在数组中设置元素543的一个字段.我不想复制整个元素(因为复制MassiveStruct会损害性能).
class P
{
struct S
{
public int a;
public MassiveStruct b;
}
void f(ref S s)
{
s.a = 3;
}
public static void Main()
{
S[] s = new S[1000];
f(ref s[543]); // Error: An object reference is required for the non-static field, method, or property
}
}
Run Code Online (Sandbox Code Playgroud)
有没有办法在C#中做到这一点?或者我总是要从数组中复制整个结构,修改副本,然后将修改后的副本放回到数组中.