Chu*_*ckZ 8 c# string inheritance strong-typing
我用通用术语来表达我的例子,因为它可以解决问题,而无需深入了解我的具体问题细节.
假设您有一堆将字符串作为参数的方法.假设一个字符串是一个人的"名字"而另一个字符串是一个人的"姓氏".可能还有其他字符串,如"最喜欢的食物".
现在,在您的代码中,您将继续查找运行时错误,因为您正在混淆参数.您可以切换"名字"和"姓氏"的顺序,或在您应该使用另一个时使用一个.强类型语言的价值在于它会在构建时而不是运行时发现这些错误.
因此,一种可能的解决方案是从字符串派生类.
public class FirstName : String
{
}
public class LastName : String
{
}
Run Code Online (Sandbox Code Playgroud)
现在,如果您传递了错误类型的字符串,编译器会抱怨.以上是不可能的,因为String是密封的.另外,"using"语句不起作用(我认为),因为编译器在混合时不会抱怨.
using LastName = String;
Run Code Online (Sandbox Code Playgroud)
当然,我可以构建包装字符串然后编写强制转换方法的类,但这似乎比它的价值更麻烦.
只是不要忘记开设其他课程,例如
A-FileStreamReader : StreamReader
B-FileStreamReader : StreamReader
Age : int
Phone : long
...
...
SLaksPhoneNumer : string // added under pressure...
Run Code Online (Sandbox Code Playgroud)
解决方案是,使用正确的参数调用方法,当方法要求输入名字时,给出它而不是姓氏......
顺便说一句,什么会阻止你做(在编译时或运行时):
new FirstName("Skeet");
new LastName("Jon");
Run Code Online (Sandbox Code Playgroud)