我不知道,如果标题是明确的,但基本上我想实现这样的事情:如何实现实例编号?
public class Effect
{
public int InternalId ...
public void ResetName() ...
}
当ResetName被调用,这将重置对象的名称:
"Effect " + someIndex;
所以,如果我有Effect
5分的情况下,他们将被重新命名为:
"Effect 1"
"Effect 2"
"Effect 3"
...
所以,我有另一种方法(ResetNames
)在另一个经理/容器类型中为每个实例调用ResetName
。而现在我必须传递一个整数到ResetName
,同时在ResetNames
之内保留一个计数器。但这种感觉并不那么干净,这使我无法在管理类之外自己打电话ResetName
,这是有效的。
如何做到这一点更好/更清洁?
至于InternalId
,它只是一些id,用于存储一切的创建顺序。因此,我不能仅仅依靠这些,因为数量很大,如32000等
编辑:集装箱ResetNames代码:
int count = 1;
var effects = this.Effects.OrderBy (n => n.InternalId);
foreach (Effect effect in effects)
{
effect.ResetName (count);
++count;
}
如果这个代码应该是thread-这可能有助于了解安全与否。 –
对不起,它不需要是线程安全的。 –
您是否可以添加实现ResetNames的容器中的代码,以使其更容易遵循? – JohnFx