-1

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

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# 代码顺便说一句:)

4

1 回答 1

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));

更新

第四个版本,使用对象初始化语法:

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

和第五

myList.Add(new Banana() { Foo = 10 });
于 2013-04-14T20:07:09.800 回答