我怎样才能调用MemberwiseClone()?
问题描述:
我很困惑如何使用MemberwiseClone()
方法。我查看了MSDN中的示例,他们通过this
关键字使用它。我怎样才能调用MemberwiseClone()?
为什么我不能直接调用它作为其他对象的方法,如GetType()
或ToString()
?另一个不出现的相关方法是ShallowCopy()
。
如果它们是Object类的一部分,为什么我看不到它们?
答
MemberwiseClone()
功能是protected
,所以你只能通过你自己类型的限定符来访问它。
答
这里是一个例子,这是我做的,迄今为止没有问题。
public class ModelBase
{
public T ShallowCopy<T>() where T : ModelBase
{
return (T)(MemberwiseClone());
}
}
,并调用它像:
var cloned = User.ShallowCopy<User>();
哎呀我还是不明白这一点。例如,查看http://msdn.microsoft.com/es-es/library/bcd5672a(VS.80).aspx中的DerivedPoint示例,派生类直接访问受保护的继承成员,使用MemberwiseClone我无法做到那 – mjsr 2011-05-19 23:52:07
@voodoomsr:通过“我没有得到它”你是说你不明白什么“受保护”的含义,或者你不明白为什么该方法受到保护? – 2011-05-19 23:59:17
@Eric看我在网址中的例子。在DerivedPoint实例中,他们直接访问继承的受保护成员。我不明白为什么这很好,我试图做不到。 – mjsr 2011-05-20 00:18:58