【发布时间】:2011-05-13 08:08:52
【问题描述】:
嗨 我创建了一个通用数组,它适用于 Int、String、Float 甚至我自己的名为 Customers 的类型。
Generic Array 具有 Add()、Sort()、ShowAll() 函数,它们适用于 Int、String 甚至 Customer Type 除非我尝试为 CustomerType 显示所有值的 showAll() 方法,该方法显示了我通过 ADD() 方法添加的所有值。
输出类似于
GenericArray.Customer
不是我想要的值。
我已经解决了
public class GArray<T> where T : Customer
但现在我无法创建 Int,Float 类型的通用数组。
这里是Class的ADD和ShowAll方法
public void Add(T temp)
{
if (index >= values.Length)
{
T[] tempArray = new T[values.Length + 1];
Array.Copy(values, tempArray, values.Length);
values = tempArray;
}
values[index] = temp;
index++;
}
public void ShowAll()
{
for (int i = 0; i < values.Length; i++)
{
Console.WriteLine(values[i]);
}
}
m 添加的值
static void Main(string[] args)
{
GArray<Customer> customers = new GArray<Customer>(3);
customers.Add(new Customer(101, "xyz"));
customers.Add(new Customer(59, "abc"));
customers.ShowAll();
}
我和我的朋友谈过了,他说我必须自己创建索引器。有人可以帮我在这种情况下如何创建索引器,它适用于客户类型或任何类型。
【问题讨论】:
-
Indexer 是指枚举器还是一些
GetValueByIndex(int)函数? -
你为什么不扩展
List<T>?它已经在后台进行了动态分配(并且效率更高,因为您每次都以 1 个字节的增量重新分配)。 -
Groo 我希望我 cld 扩展了 List 但是我的老师有限制所以我必须扩展简单的 Array :)
标签: c# .net arrays generics indexer