我正在学习 C# 中的泛型,我正在尝试创建一个泛型数组并向其中添加一些字符串。我可以很容易地向它添加 int
值,但我不知道如何让它与 strings
一起工作。当我尝试使用字符串时,我得到了 NullReferenceException
。
我有一个名为 myArray
的类,它看起来像这样:
class MyArray<T> : IComparable<T>, IEnumerable<T>, IEnumerator<T>
{
T[] data = new T[10];
int current = -1;
public T[] Data
{
get { return data; }
}
public void Add(T value)
{
for (int i = 0; i < data.Length; i++)
{
if (data[i].Equals(default(T)))
{
data[i] = value;
return;
}
}
T[] tmp = new T[data.Length + 10];
data.CopyTo(tmp, 0);
Add(value);
}
在我的主窗体中,我添加了这样的数据:
class Program
{
static void Main(string[] args)
{
MyArray<string> StringArray = new MyArray<string>();
StringArray.Add("ONE");
StringArray.Add("TWO");
}
}
最佳答案
string
的default
是null
,因为它是引用类型,而不是值类型。您正在构造一个类型为 T[]
的新数组,这会生成一个填充有默认值 T
的数组,在本例中为 null
.
之后,data[i].Equals(default(T))
在您尝试调用 null.Equals(...)
时抛出 NRE。
关于c# - 将数据添加到通用字符串数组 C#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5198858/