具有类对象的类返回列表的最佳OOP实践?

时间:2013-04-14 20:04:39

标签: c# list oop class methods

也许这是一个主观问题..但我一直试图找出最好的方法。 一些示例代码:

class Banana
{
   private int _foo;

   public Banana()
   {
      _foo = 0;
   }
   public Banana(int whatever)
   {
      _foo = whatever;
   }

   public int Foo
   {
      ... get & set ... // get and set function
   }

   public list<Banana> MyFunction()
   {
      list myList<Banana> = new list<Banana>();

      for (int i=0; i<100; i++)
      {
         // This code?
         Banana banana = new Banana();
         banana.Foo = i;
         myList.Add(banana);

         // Or this?
         Foo = i;
         myList.Add(new Banana(Foo));
      }

      return myList;
   }
}

重要吗?我认为后者看起来更干净,但需要一个带有值的构造函数。 或者,还有更好的方法? 提前致谢!这是C#Code btw:)

1 个答案:

答案 0 :(得分:3)

他们不这样做!

// This code?
Banana banana = new Banana();
banana.Foo = 10;
myList.Add(banana);

使用Banana创建新的Foo = 10实例,根本不会影响当前对象

// Or this?
Foo = 10;
myList.Add(new Banana(Foo));

将当前对象Foo属性值更改为10 ,并创建具有相同值的新Banana实例。

我很确定你正在寻找第一个动作。

还有第三种选择:

myList.Add(new Banana(10));

<强>更新

第四版,使用Object Initialization语法:

Banana banana = new Banana() { Foo = 10 };
myList.Add(banana);

和第五

myList.Add(new Banana() { Foo = 10 });