【问题标题】:C# Should I make a second class for single properties when my first class has an object array?C# 当我的第一个类有一个对象数组时,我应该为单个属性创建第二个类吗?
【发布时间】:2017-04-19 06:15:11
【问题描述】:

所以基本上我有一个叫做动物的类。 在这个类中,我有字符串 a,b,c,x,y,z;

我想为这个程序创建一个对象数组,所以我创建了一个名为 arr 的对象数组。

对于 a,b,c,x 和 y,我希望每个对象数组元素具有不同的值。

即:arr[0].a 将不同于 arr[1].a,后者不同于 arr[2].a 等。

但是,对于属性 z,我只想为整个程序使用一个值,即:arr[0].z 是我想要使用的唯一 z 值。目前我只调用 arr[0].z 并且从不在 [] 中使用任何其他数字。

这是不好的做法吗?我是否应该为属性 z 创建一个全新的类,以免浪费内存空间?不使用 z 的任何其他值是否还有其他问题?

【问题讨论】:

  • 内存空间是最不重要的。之所以设计不好是因为z 没有描述动物的任何属性。就好像你试图在一个物体中保存物种、年龄、颜色和光速一样。
  • 感谢您的回答。那么我现在是否将 z 称为 z,而不是 arr.z?

标签: c# arrays oop object memory-management


【解决方案1】:

将 z 变量设为静态,并在类的构造函数中简单地使用此值进行初始化。

【讨论】:

    【解决方案2】:

    你可以用这种方式实现你的类。

    public class Animal
    {
        public string A { get; } // related to instance
        public string B { get; }
        public string C { get; }
        public string X { get; }
        public string Y { get; }
    
        public string Z          // gets or sets static variable which will affect all animals.
        {
            get { return _z; }
            set { _z = value; }
        }
    
        private static string _z;
    }
    

    这是不好的做法吗?

    没有上下文我们不能说它总是糟糕的设计与否。但总的来说,是的,它的设计很糟糕。

    【讨论】:

    • 你应该参考大写Z。像这样arr[2].Z = ""。 @Nuthead
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-11-04
    • 1970-01-01
    • 2023-03-21
    • 1970-01-01
    • 2023-03-08
    • 2015-08-09
    • 2010-12-23
    相关资源
    最近更新 更多