c# - 将数据添加到通用字符串数组 C#

标签 c# generics arrays

我正在学习 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");
    }
}

最佳答案

stringdefaultnull,因为它是引用类型,而不是值类型。您正在构造一个类型为 T[] 的新数组,这会生成一个填充有默认值 T 的数组,在本例中为 null.

之后,data[i].Equals(default(T)) 在您尝试调用 null.Equals(...) 时抛出 NRE。

关于c# - 将数据添加到通用字符串数组 C#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5198858/

相关文章:

c# - 单元测试属性持续时间格式

c# - 密封类 - 为什么要删除公共(public)构造函数?

c# - 通用类的通用集合?

typescript - 是否可以从 TypeScript 的类型推断中排除 "this"?

java - 如何使用寺庙方法或泛型方法或其他方法优化我的代码?现在我必须编写类似的代码三遍

arrays - 在 Spark Scala Dataframe 中迭代具有动态大小的数组列

c# - HTTP Web 请求的欺骗 IP 地址?

java - Java 中的静态和非静态 vs 泛型和通配符

javascript - for 循环仅适用于最后一项

java - 是什么导致了 java.lang.ArrayIndexOutOfBoundsException 以及如何防止它?