Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/css/42.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,我需要在应用程序中创建同一类的多个实例。 在这个类中,我需要访问其他类的属性,我并不想在所有类的构造中推送我的属性 所以我想我可以让这个类从一个父类继承,这个父类拥有我需要的所有属性 例如: // This class is called only once at the start of my app class Parent { int Property1 = 0; public Parent(int val) { this.Property1 =

我需要在应用程序中创建同一类的多个实例。 在这个类中,我需要访问其他类的属性,我并不想在所有类的构造中推送我的属性

所以我想我可以让这个类从一个父类继承,这个父类拥有我需要的所有属性

例如:

// This class is called only once at the start of my app
class Parent
{
    int Property1 = 0;

    public Parent(int val)
    {
        this.Property1 = val;
    }
}


class Child : Parent
{
    public Child()
    {
    }

    public void PrintProp()
    {
        // Will always print the value of Parent's Property1 which has been defined only once
        Console.WriteLine(Property1);
    }
}
该代码的问题在于,每次我定义一个新的Child(),Property1的值都是0,而不是我在程序启动时发送的值


如何实现这一点?

在面向对象编程语言中,继承是维护is关系的类的关联机制

有关编程语言作者的观点,请参见

有关更多详细信息,请参见。(我无意指出,目前该文件的来源很差。)

看起来,您试图实现的目标类似于全局值或跨实例共享值。有关在Windows演示文稿框架中执行此操作的机制,请参阅

如果希望一个新实例与另一个实例具有相同的值,则需要将这些值复制到另一个实例上,或使一个实例指向另一个实例对象以获取其值


要以面向对象的方式共享全局值,请查看。

这听起来像是父级应该包含某种配置。如果是这种情况,只需在每个子构造中传递该类型的实例。继承在这里对您没有帮助。property1对所有实例都是全局的,还是对每个实例化的对象都是不同的?子对象如何知道它的父对象是父对象?实际上代码不会编译!编译器将抱怨“Parent不包含接受0个参数的构造函数”,删除该错误将解决该问题。@ApocKalipsS您能否澄清“我真的不想在所有类的构造中推送我的属性”是什么意思实际上,仅仅为了代码重用而使用继承是一种不好的做法,它最终将在大规模项目中成为Yo-Yo反模式!使用继承的主要原因是动态绑定和多态性。