在struct中使用继承

时间:2014-09-24 10:21:01

标签: inheritance

EDITED

感谢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();

我不知道为什么我专注于使用结构而不是课程,你们都是对的,我道歉,感谢你们的帮助。

2 个答案:

答案 0 :(得分:0)

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.

结构用于将数据分组在一起,作为一般规则,如果您需要方法/ contrsucts,那么您最好使用类。 [根据此Link结构被密封,它们不能被继承,因此您的代码将无法编译。我建议改用课程。 ]

答案 1 :(得分:0)

  

直到这里一切正常,

不,实际上并非如此。 没什么到目前为止还可以。

但是,我认为你只想在这里上课:

class InfoBase { }

class InfoInhe : InfoBase { }

class Data
{
    public InfoBase Info { get;set; }
}

然后:

Data foo = new Data();
//.......do things.........//
foo.Info = new InfoInhe();

你需要在C#中创建一个struct 非常罕见,而且我在“这里是我的代码”示例中看到它的次数很多,它被不恰当地使用了。