【发布时间】:2012-03-26 18:02:12
【问题描述】:
我用通用术语来表述我的示例,因为它无需深入我的具体问题细节就可以理解重点。
假设您有一堆将字符串作为参数的方法。假设一个字符串是一个人的“名字”,另一个是一个人的“姓氏”。可能还有其他字符串,例如“最喜欢的食物”。
现在,在您的代码中,您不断发现运行时错误,因为您将参数弄混了。您可以切换“名字”和“姓氏”的顺序,或者在应该使用另一个时使用另一个。强类型语言的价值在于它会在构建时而不是运行时发现这些错误。
因此,一种可能的解决方案是仅从字符串派生类。
public class FirstName : String
{
}
public class LastName : String
{
}
现在,如果你传递了错误类型的字符串,编译器会报错。 以上是不可能的,因为 String 是密封的。 此外,“使用”语句不起作用(我认为)因为当我将它们混合时编译器不会抱怨。
using LastName = String;
当然,我可以构建包装字符串的类,然后编写强制转换方法,但这似乎比它的价值更麻烦。
【问题讨论】:
-
请不要在标题前加上“C#”之类的前缀。这就是标签的用途。
-
为什么不使用命名参数(在 VS2010 版本的 C# 中引入)来避免参数问题的切换或排序,而不仅仅是使用更强大的类型来让生活变得艰难? msdn.microsoft.com/en-us/library/dd264739.aspx
标签: c# string inheritance strong-typing