首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >转向仿制药。

转向仿制药。
EN

Stack Overflow用户
提问于 2008-11-29 15:57:22
回答 6查看 317关注 0票数 6

我正在将一个1.1WinForms应用程序迁移到2.0。什么是主要的事情,我应该立即改变,因为泛型。到目前为止,我所拥有的是:

  1. 用通用字典替换所有哈希表
  2. 用List<>替换所有数组
  3. 将所有CollectionBase派生类替换为: List<>

还有其他应该立即做的事吗?

泰克斯角

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2008-11-29 15:59:21

还有其他应该立即做的事吗?

通常,在可能的情况下,将任何提及IEnumerable的内容更改为IEnumerable<T>。通过切换整个命名空间(即在每个文件中不使用import System.Collections并导入System.Collections.Generic ),迁移可以得到很大的帮助。

此外,搜索代码中提到的object和/或装箱的用法,并考虑这是否仍然合适,还是应该由泛型代替。

正如jalf在评论中提醒我的那样,另一个重要的更改是在适用的情况下切换到IComparable的通用版本。

票数 7
EN

Stack Overflow用户

发布于 2008-11-29 17:36:19

我认为不应该马上做任何事!1.1代码起作用了,对吧?批发交换给仿制药的商业案例是什么?在2.0下编译应用程序,让它运行并进行测试。然后,由于需要新的特性来很好地利用泛型,所以将这些特性实现为泛型。

票数 8
EN

Stack Overflow用户

发布于 2008-11-29 17:20:51

由于它们的表现力,一般的集合肯定是首选的。如果从非泛型集合中进行更改,需要记住的一件事是,有时这种行为可能与您预期的不同。例如,对于不存在的值,在Hashtable上使用索引器与字典会有不同的效果。Hashtable将返回null,Dictionary将抛出。

代码语言:javascript
复制
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

处理这一问题的一种常见方法是使用以下技术:

代码语言:javascript
复制
string s = null;
if (dic.TryGetValue(k, out s))
{
    // if we're here, k was found in the dictionary
}

这只会在运行时出现,因此值得提前了解。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/327645

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档