枚举与具体类来表示对象类型

时间:2015-12-18 13:41:13

标签: c# oop enums

基本上,我需要实现资源(黄金,钢铁等)功能及其数量,我想知道使用带有resourceType字段的单个资源类是否更好,或者最好使用许多ConcreteResource类继承资源。以下是一些可以更好地理解我的问题的例子:

使用枚举:

class Resource
{
    private ResourceType resourceType;
    private int quantity;
}

enum ResourceType
{
    ConcreteResource1,
    ConcreteResource2
}

使用具体类:

abstract class Resource
{
    private int quantity;
}

class ConcreteResource1 : Resource
{       
}

class ConcreteResource2 : Resource
{
}

1 个答案:

答案 0 :(得分:3)

这实际上取决于对象的使用。

使用类可以获得更多功能:

  1. 可以继承,
  2. 它可以有方法,
  3. 它可以有属性,字段等......
  4. 因此,一般来说,如果你的对象在它们的方法,变量,接口等方面不相同(也就是说,它们是两个完全不同的对象),你应该使用{{1} }。但是,如果你的对象几乎相同除了“类型”,那么class就足够了。

    在你的例子中,假设两种金属的使用方式完全不同,一种是方法[A1,A2,...,An],另一种是[B1,B2,...,Bm],那么它是如果Enum可能继承自同一class类,则最佳。

    但是,如果它们几乎完全相同,那么您应该考虑使用MetalBase