【发布时间】:2011-06-29 19:33:22
【问题描述】:
昨天我花了一些时间试图找到一个错误。长话短说,我终于意识到是因为这个构造函数:
public Triangle(List<Vertex> vertices) {
this._values = vertices;
}
我试图用一个值列表初始化一个对象,而该对象只是引用了我的对象,而不是从列表中获取值。如果我不放弃作为参数传递的列表并稍后将其用于其他用途,例如用相同的值初始化其他内容,或者如果我决定清除它并填充新值,我显然会破坏我的 @ 状态987654322@对象不知情。
我的第一反应是在构造函数中“修复错误”,但随后我开始思考它是否真的应该是这样。涵盖此类事情的良好做法是什么?一般来说,我应该如何看待采用值列表的构造函数/初始化方法?他们应该保持原样吗?我是否可以重复使用列表,当它导致错误时是谁的错?
我的意思是,我显然可以这样做:
var triangle = new Triangle(new List<Vertex>(vertices));
但它不应该由 Triangle 类的创建者完成吗?
我想知道这方面的一些指导方针。谢谢。
【问题讨论】:
-
@Timwi:好的,我修复了错误。我真的认为当实际代码无关紧要时就是这种情况,因为我不问这个具体情况,而是问事情一般应该如何,这只是一个例子
标签: c# .net reference parameter-passing