【发布时间】:2014-10-23 22:14:54
【问题描述】:
我有一个对象可以拥有的 50 个属性的列表。此对象可以具有不同类别的属性 - 类别 1、类别 2 和类别 3。类别 1 是类别 2 的子集,类别 2 是类别 3 的子集,类别 3 是完整列表。我最初使用 struct 但我现在想知道是否应该使用类,或者我是否一开始就以错误的方式进行。为了方便起见,我们将其缩减为 5 个属性和 2 个类别。
C1: A1, A2, A3
C2: A1, A2, A3, A4, A5
我想做的主要事情是将结构或类保存在我的主类上,而不区分两者。如果我正在使用一个类,我可以创建一个可以派生 2 个类别类的基类并将其保存为基类:
Category category;
...
category = new Category1();
category = new Category2();
由于我要处理每个类别的 10、25、50 个属性,因此类定义只是一个大型属性列表,看起来 struct 会更合适。 但是如果我使用结构,看起来我必须将它保存为对象类型?这看起来很笨拙。
解决这个问题的正确方法是什么?
让我在这里偷偷问第二个问题。 :) 那么,由于每个类(或结构)都有大量属性列表,使用对象初始化器而不是具有 10、25、50 个参数的构造函数会更好吗?
【问题讨论】:
-
一般来说,除非你有充分的理由,否则不要使用结构体。默认为类。结构是值类型,可能会导致意外行为,尤其是当您使它们可变时。同样因为它们是值类型,所以它们应该很小; 50 个成员对于一个结构来说太多了。
-
@Blorgbear - 谢谢。这就是我想得到一些反馈的原因。这些字段在成品中将是不可变的,但结构是值类型……但是 50 个字段太多了。等等等等。哈哈。看来我会坚持上课。
标签: c# class struct constructor object-initializers