首先举个例子,但是请带点盐,不要讨论我应该使用一种还是另一种类型,重点是改变数据类型的可能性:
让我们假设我们正在创建一个用于处理金钱和人口的应用程序。我们决定用
一段时间后,我们意识到我们将需要其他类型,因为我们现在需要的是负值,或者需要比Uint16可以表示的数量更多的数量,因此我们想要使用Int32代替进行货币计算。但是,在我们的代码中还有Uint16表示的其他数量(例如,人口),因此我们不能仅将Uint16的所有用法替换为Int32。
所以问题是:如何在特定情况下引用数据类型,以便我能够轻松更改正在使用的数据类型,而又不影响相同数据类型的不相关使用?>
请注意,我在考虑此问题时并未创建 Class Money ,但是如果您认为应该这样做,那么我也很高兴阅读您对此的推理。
>答案 0 :(得分:0)
别名的一种方法是在using
部分中进行命名。您可以为几乎所有类型指定自定义名称,然后在代码中使用该名称。
如果您只想从uint
切换到decimal
,则可以使用内置类型进行操作:
using Number = System.Int32;
,您将像这样使用它:
Number myNumber = 1;
然后,如果您想将Number
的所有实例改为decimal
,只需执行以下操作:
using Number = System.Decimal;
您也可以使用自定义类型来执行此操作,例如,假设我们有两个类,Bank1
和Bank2
。 Bank1
具有称为uint
的{{1}}属性,而Balance
具有同名的Bank2
属性。我们可以创建一个在我们的代码中使用的名为decimal
的别名,并使其引用类型Bank
,然后我们可以实例化其实例并将Bank1
分配给余额
为了突出显示每次都调用不同的类,我更改了它们的int
覆盖,以使ToString
余额用小数点显示:
decimal
现在,稍后我们可以更改别名所指的内容而不会破坏我们的代码:
using Bank = Test.Bank1;
namespace Test
{
public class Bank1
{
public uint Balance { get; set; }
public override string ToString() => $"Balance is {Balance}";
}
public class Bank2
{
public decimal Balance { get; set; }
public override string ToString() => $"Balance is {Balance:N2}";
}
public class Program
{
private static void Main(string[] args)
{
var bank = new Bank();
bank.Balance = 100;
Console.WriteLine(bank);
GetKeyFromUser("\nDone! Press any key to exit...");
}
}
}
请注意,根据所做的更改,仍然必须去修复更改类型后可能发生的所有编译错误。