【发布时间】:2011-09-27 23:18:40
【问题描述】:
我创建了一个方法来组织一个不知道类型的通用列表,如果它的 int 或 decimal 它将排序。
但是,从文本框中检索值的代码使用 List
我尝试将其转换为 List,但它不起作用。 如果他们在文本框中键入整数、小数或字符串,我希望此代码能够正常工作。
这是面试问题的一部分,他们要求不要使用排序方法,并且输入应该接收例如 INTS 或 DECIMALS
private void btnSort_Click(object sender, EventArgs e)
{
List<int> list = new List<int>();
list.Add(int.Parse(i1.Text));
list.Add(int.Parse(i2.Text));
list.Add(int.Parse(i3.Text));
list.Add(int.Parse(i4.Text));
list.Add(int.Parse(i5.Text));
Sort(list);
StringBuilder sb = new StringBuilder();
foreach (int t in list)
{
sb.Append(t.ToString());
sb.AppendLine();
}
result.Text = sb.ToString();
}
private void Sort<T>(List<T> list)
{
bool madeChanges;
int itemCount = list.Count;
do
{
madeChanges = false;
itemCount--;
for (int i = 0; i < itemCount; i++)
{
int result = Comparer<T>.Default.Compare(list[i], list[i + 1]);
if (result > 0)
{
Swap(list, i, i + 1);
madeChanges = true;
}
}
} while (madeChanges);
}
public List<T> Swap<T>(List<T> list,
int firstIndex,
int secondIndex)
{
T temp = list[firstIndex];
list[firstIndex] = list[secondIndex];
list[secondIndex] = temp;
return list;
}
我想要这样的东西:但给出错误 错误 1 找不到类型或命名空间名称“T”(是否缺少 using 指令或程序集引用?) c:\users\luis.simbios\documents\visual studio 2010\Projects\InterViewPreparation1\InterViewPreparation1\Generics\ GenericsSorting1.cs 22 18 InterViewPreparation1
列表列表 = 新列表(); list.Add(i1.Text); list.Add(i2.Text); 排序(列表);
【问题讨论】:
-
为什么,请告诉我,你不使用
List<T>.Sort吗? -
+1 给杰森。这是文档:msdn.microsoft.com/en-us/library/b0zbh7b6.aspx
-
因为这是一个面试问题,他们要求不要使用排序方法。
-
如何更改第一行,使其不使用 List
,如果我尝试执行 List ,则会出现编译器错误。