【发布时间】:2010-06-01 19:55:58
【问题描述】:
我正在清理我编写的 C# 应用程序中的一些代码,并真正尝试专注于最佳实践和编码风格。因此,我正在通过 FXCop 运行我的程序集,并尝试研究它给我的每条消息,以决定应该和不应该改变什么。我目前关注的是语言环境设置。例如,我目前遇到的两个错误是我应该为 Convert.ToString(int) 指定 IFormatProvider 参数,并设置 Dataset 和 Datatable 语言环境。这是我从来没有做过的事情,也从来没有考虑过太多。我总是把这个超载排除在外。
我正在开发的当前应用程序是一家小公司的内部应用程序,它很可能永远不需要在另一个国家/地区运行。因此,我认为我根本不需要设置这些。另一方面,这样做并没有什么大不了的,但它似乎是不必要的,并且可能会在一定程度上影响可读性。
我知道微软的争论是如果它存在就使用它,句号。好吧,从技术上讲,我应该在每个实现 IDisposable 的对象上调用 Dispose(),但我不会为 Datasets 和 Datatables 这样做。我想知道关于小型内部应用程序的全球化和本地化的做法是“在野外”。
【问题讨论】:
-
如果你不在 DataSets 上调用 Dispose,你肯定会发生内存泄漏。
-
这是 2 个问题。第 2 部分与标题完全无关。
-
@Otavio:不,所有控件/组件都是 IDisposable,但并非所有这些类都需要它。
-
@Henk:我真的只是想知道全球化和本地化。我只是提供了围绕 IDisposable 的实践作为我不遵循 Microsoft 建议的示例,这是正确的。我会稍微修改一下我的问题以使其更清楚。
-
一个基于 cmets 对已删除问题的简要说明:我正在谈论的一个例外是 WCF 代理类。这是我知道
Dispose可能引发异常的唯一情况。如果在using块的末尾调用Dispose然后抛出异常,那么您将丢失任何正在进行的异常。
标签: c# .net localization globalization