C# 处理州和国家(或省):实施的最佳方式

C# 处理州和国家(或省):实施的最佳方式,c#,.net,vb.net,C#,.net,Vb.net,在我的职业生涯中,我看到了人们选择的几十种处理州和国家数据的方式(如在纽约或美国)。我见过枚举、多维数组、XML文档或数据库中的数据驱动类,以及优秀的老式字符串 所以,我想知道,人们认为什么是“最佳方式”来处理这个非常常见的实现?我知道大多数答案主要基于观点和偏好;但是,我很想听到争论,因为最近我正在讨论的一个应用程序的问题引起了一场小小的争论。 < P>如果你认为美国的州数不变,那么你所拥有的是一个有限的、小的、固定的值集,可以很容易地与一个数字联系起来。对于这种类型的数据结构,枚举非常有效。

在我的职业生涯中,我看到了人们选择的几十种处理州和国家数据的方式(如在纽约或美国)。我见过枚举、多维数组、XML文档或数据库中的数据驱动类,以及优秀的老式字符串


所以,我想知道,人们认为什么是“最佳方式”来处理这个非常常见的实现?我知道大多数答案主要基于观点和偏好;但是,我很想听到争论,因为最近我正在讨论的一个应用程序的问题引起了一场小小的争论。

< P>如果你认为美国的州数不变,那么你所拥有的是一个有限的、小的、固定的值集,可以很容易地与一个数字联系起来。对于这种类型的数据结构,枚举非常有效。然后,我选择枚举,因为它们具有良好的编译时验证,并且键入如下内容读起来很好

var state = GetStateInfo(States.Nebraska);

但是,如果你认为状态的数量是一个变化的值,那么枚举可能不是最好的选择。框架设计指南()建议您不要对一组被视为打开(正在更改)的值使用枚举。原因是,如果该值发生更改,则可能会破坏已发布的代码。相反,我将使用静态类和字符串常量作为名称

如果只需要一个简单的状态列表,我认为枚举或XML就可以了。如果你有其他相关数据,比如说州税率或邮政编码数据,那么我想我会将这些州存储在数据库中


各国也是如此。您可能希望根据国家控制语言、货币等。我认为如果它在数据库中,那就更容易处理了

我会选择一个标准来枚举地理区域,然后在表中关联键。过去我用过。这是一个联邦标准,数字和缩写是众所周知的。对于国际国家代码,我们用于编码位置。也有一些iso标准,如iso 3166,可能也很有吸引力,但这更符合偏好和品味