Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/297.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 派生类和保护基类的成员数据_C#_Inheritance - Fatal编程技术网

C# 派生类和保护基类的成员数据

C# 派生类和保护基类的成员数据,c#,inheritance,C#,Inheritance,我想知道是否有某种方法可以声明一个作为基类成员数据的变量,这样它就不会被派生自基类的类继承。我的基类中有一些成员数据不应该是派生类对象的一部分,所以我想将应该继承的和不应该继承的分开。有什么方法可以做到这一点吗?如果您试图从派生/继承类中“隐藏”数据,请使用privateaccess修饰符。 是的,即使它们是继承的,您也不能访问它们,除非它们被标记为受保护或公共,是的。我认为这不是C++中的一个特性。我真正想做的是创建一个基类,其中的成员数据带有某种前缀,防止数据被子类继承。类似于:noinhe

我想知道是否有某种方法可以声明一个作为基类成员数据的变量,这样它就不会被派生自基类的类继承。我的基类中有一些成员数据不应该是派生类对象的一部分,所以我想将应该继承的和不应该继承的分开。有什么方法可以做到这一点吗?

如果您试图从派生/继承类中“隐藏”数据,请使用
private
access修饰符。
是的,即使它们是继承的,您也不能访问它们,除非它们被标记为
受保护
公共
,是的。我认为这不是C++中的一个特性。我真正想做的是创建一个基类,其中的成员数据带有某种前缀,防止数据被子类继承。类似于:noinherit void func1();或诺海瑞特双x;其中noinherit只是我为定义不应由子类继承的数据而编写的一些关键字。在某种程度上,我希望能够确定孩子们从父母那里继承的基因,而不是孩子们仅仅获得父母的全套基因,并根据哪些基因是私有的,哪些基因是公有的,哪些基因是受保护的,来确定某个表型,使用遗传学类比。

私有字段/方法/属性对于派生类不容易使用。那会有帮助吗?这里也可以看到@Ric,但它们仍然生活在对象中。您可以通过封装(如果提供的话)或反射(reflection)访问它。请参阅最高答案上留下的注释:如果您尝试使用derivedType.GetField(“f”,BindingFlags.Instance | BindingFlags.NonPublic)从派生类中提取私有字段,您将一无所获,尽管从技术上讲,这应该返回所有继承的成员,但我一直在寻找一种方法来阻止派生类继承数据。如果可能的话,我想这样做来缩小它们的尺寸。不确定这是否可行。如果是这样的话,最好还是试试别的办法。