Inheritance 在结构内部使用继承

Inheritance 在结构内部使用继承,inheritance,Inheritance,已编辑 感谢Marc Gravell的回答和另一个回答,现在正在工作: public class INFO_BASE{ }; public class INFO_INHE : INFO_BASE {...}; class DATA{ //stuff public INFO_BASE info; }; DATA foo = new DATA(); //.......do things.........// data.info = new INFO_INHE(); 我说不出为

已编辑

感谢Marc Gravell的回答和另一个回答,现在正在工作:

public class INFO_BASE{

};

public class INFO_INHE : INFO_BASE {...};

class DATA{
   //stuff
   public INFO_BASE info;
};


DATA foo = new DATA();
//.......do things.........//
data.info = new INFO_INHE();
我说不出为什么我把重点放在使用结构而不是类上,你们都是对的,我很抱歉,谢谢你们的帮助。

C#中的结构只能实现接口

Structs can also contain constructors, constants, fields, methods, properties, indexers,
operators, events, and nested types, although if several such members are required, 
you should consider making your type a class instead.
结构用于将数据分组在一起,一般来说,如果需要方法/控件,最好使用类。[由于此结构是密封的,它们不能被继承,因此您的代码将无法编译。我建议改用类。]

直到这里一切都好了

不,真的不是到目前为止没有任何问题

但是,我认为您只需要在这里上课:

class InfoBase { }

class InfoInhe : InfoBase { }

class Data
{
    public InfoBase Info { get;set; }
}
然后:


非常很少需要在C#中创建
struct
,大多数时候我在“这是我的代码”示例中看到,它被不当使用。

为什么要使用struct?我认为您需要类提供的完整OO功能。我不确定您在这里尝试做什么,但您的代码将无法编译。不能从结构继承,不存在虚拟构造函数,也不能向结构添加无参数构造函数。在C#中,不能将继承与
structs
一起使用。结构是密封的,只能实现接口。我不知道你是如何编译代码的。首先感谢你的回复。对象中会有不同的信息,具有不同的内部结构。我将从UDP套接字接收一条包含数据的消息,其中包含一个结构中的数据,我尝试对覆盖信息的每个UDP消息使用相同的结构field@Nak你为什么在想结构?是什么过程导致您在此处选择了
struct
?我强烈怀疑这仅仅是一个糟糕的选择,“如果你需要方法”在我看来是非常糟糕和误导性的建议;您是否需要方法在很大程度上与它应该是结构还是类无关。通常,当我看到人们这样说时——他们来自C/C++背景。这是不同的。可能建议使用结构的东西是:“表示一个值而不是一个实体”、“不可变”和“小”的交叉点。关于方法什么都没有。所以关键是浪费在结构和类上的时间太多了。。。。好的,我想我需要休息一下。大的THANKS@MarcGravell结构有一些有趣的属性,比如结构相等性(当它们不是由引用类型组成时)和非空性。如果你愿意忽略它们的其他缺陷@guillaume31,这使它们成为值对象的良好候选对象,任何类型都可以具有结构平等性;至于不可空性:这很少是真正代码中最大的障碍之一是的,我说的是固有属性,而不是你必须编程的属性。关于可空性:有人认为这是一个十亿美元的错误;)
Data foo = new Data();
//.......do things.........//
foo.Info = new InfoInhe();