我正在将一个1.1WinForms应用程序迁移到2.0。什么是主要的事情,我应该立即改变,因为泛型。到目前为止,我所拥有的是:
还有其他应该立即做的事吗?
泰克斯角
发布于 2008-11-29 15:59:21
还有其他应该立即做的事吗?
通常,在可能的情况下,将任何提及IEnumerable的内容更改为IEnumerable<T>。通过切换整个命名空间(即在每个文件中不使用import System.Collections并导入System.Collections.Generic ),迁移可以得到很大的帮助。
此外,搜索代码中提到的object和/或装箱的用法,并考虑这是否仍然合适,还是应该由泛型代替。
正如jalf在评论中提醒我的那样,另一个重要的更改是在适用的情况下切换到IComparable的通用版本。
发布于 2008-11-29 17:36:19
我认为不应该马上做任何事!1.1代码起作用了,对吧?批发交换给仿制药的商业案例是什么?在2.0下编译应用程序,让它运行并进行测试。然后,由于需要新的特性来很好地利用泛型,所以将这些特性实现为泛型。
发布于 2008-11-29 17:20:51
由于它们的表现力,一般的集合肯定是首选的。如果从非泛型集合中进行更改,需要记住的一件事是,有时这种行为可能与您预期的不同。例如,对于不存在的值,在Hashtable上使用索引器与字典会有不同的效果。Hashtable将返回null,Dictionary将抛出。
Hashtable ht = new Hashtable();
ht.Add(1, "one");
string s1 = ht[1; // s1="one"
string s2 = ht[2]; // s2=null
var dic = new Dictionary<int, string>();
dic.Add(1, "one");
string s1 = dic[1]; // s1="one"
string s2 = dic[2]; // throws KeyNotFoundException处理这一问题的一种常见方法是使用以下技术:
string s = null;
if (dic.TryGetValue(k, out s))
{
// if we're here, k was found in the dictionary
}这只会在运行时出现,因此值得提前了解。
https://stackoverflow.com/questions/327645
复制相似问题