也许这是一个主观问题..但我一直试图找出最好的方法。 一些示例代码:
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:)
答案 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 });