有人可以向我解释为什么这在 C# 中不正确:
namespace NamespaceA
{
public class ClassA
{
public interface IInterfaceA
{
String Property
{
set;
}
}
}
}
namespace NamespaceB
{
public class ClassB
{
public class ImpA: NamespaceA.ClassA.IInterfaceA
{
private String mProperty;
public String Property{ set{ mProperty = value; } }
}
public ClassB()
{
ImpA aImpA = new ImpA();
foo(ref aImpA);
}
private void foo(ref NamespaceA.ClassA.IInterfaceA aIInterfaceA)
{
aIInterfaceA.Property = "SomeValue";
}
}
}
这将产生以下编译错误:
错误参数 1:无法从 'NamespaceB.ClassB.ImpA' 转换为 'ref NamespaceA.ClassA.IInterfaceA'
想要修改接口属性并从foo()
. 如果您删除ref
关键字,它会编译,但您所做的更改foo()
会丢失......