【发布时间】:2015-12-06 12:34:49
【问题描述】:
我有一个类baseClass,以及一个baseClass 的对象列表。我想要实现的是我必须动态地将实例编号分配给列表中的每个对象。为此,我正在做的是使用构造函数来执行此操作。
以下是类定义:
public class baseClass
{
private int _InstanceNumber;
private int _MyIntVal;
private string _MyString;
public string MyString
{
get { return _MyString; }
set { _MyString = value; }
}
public int MyIntVal
{
get { return _MyIntVal; }
set { _MyIntVal = value; }
}
public int MyProperty
{
get { return _InstanceNumber; }
}
public baseClass(int instance)
{
_InstanceNumber = instance;
}
}
对象列表的创建如下:
int instanceNumber = 0;
List<baseClass> classList = new List<baseClass>();
classList.Add(new baseClass(instanceNumber++) { MyString = "sample1", MyIntVal = 10 });
classList.Add(new baseClass(instanceNumber++) { MyString = "sample2", MyIntVal = 11 });
我知道这不是创建它的实际方法。它实际上并没有给出索引号。如何计算实例数?
考虑以下场景,即创建另一个对象列表,然后很难维护实例编号。或者如果我在列表之外创建另一个对象(这也是一个实例)。
int instanceNumber = 0;
List<baseClass> anotherClassList = new List<baseClass>();
classList.Add(new baseClass(instanceNumber++) { MyString = "sample1", MyIntVal = 10 });
classList.Add(new baseClass(instanceNumber++) { MyString = "sample2", MyIntVal = 11 });
更新: 这是我的临时解决方案。我需要适当的方式/方法来维护实例编号
【问题讨论】:
-
“它实际上并没有给出索引号” - 你是什么意思?顺便说一句,您应该研究自动实现的属性,这可以显着减少您需要编写的代码量——尤其是 C# 6,它支持自动实现的只读属性。我还强烈建议您查看 .NET 命名约定。
-
接下来,如果您创建一个新列表,您会希望这些实例编号重新从 0 开始吗?或者这是一个全局实例编号?
-
你的代码对我有用...
-
" 它实际上没有给出索引号" 会发生什么?你发现哪个错误?请解释清楚
-
您可以不存储实例编号,而是通过
IndexOf方法从List<T>获取它。var list = new List<BaseClass>(); var a = new BaseClass(); list.Add(a); var b = new BaseClass(); list.Add(b); int numberOfA = list.IndexOf(a);
标签: c# list class object instance