什么时候必须在C#中使用extern alias关键字?

mas*_*ani 33 c# keyword

什么时候必须extern alias在C#中使用关键字?

Jon*_*eet 30

基本上,当您想要使用来自不同程序集的具有相同完全限定名称(相同名称空间,相同类型名称)的两种类型时,您才真正需要它.您为每个程序集声明了一个不同的别名,因此您可以通过该别名引用它们.

不用说,你应该尽量避免陷入这种情况开始:)

  • @RBT:不,它仅*声明*别名。但是您可以使用WidgetsVendor1.Widgets;并编写var wid = new Widget();。 (2认同)

Han*_*ant 30

它可以帮助你在版本控制中挖出一个非常深的洞.假设您的程序的第一个版本使用此类

using System;

namespace Acme.Financial.Banking {
  [Serializable]
  public class BankAccount {
    public double Balance { get; set; }
    //...
  }
}
Run Code Online (Sandbox Code Playgroud)

你已经用它序列化了很多银行账户记录.一位会计师开始抱怨资产负债表被罚款十亿分之一,所以你改变了班级:

  public decimal Balance { get; set; }
Run Code Online (Sandbox Code Playgroud)

问题解决了,下一位客户的资产负债表很快乐.在您被要求以旧格式升级包含大量序列化记录的现有客户之前.很大的问题,因为课程已经改变,你不能再反序列化记录了.

extern别名解决了您的问题,您可以在代码中引用类的旧版本和新版本,即使命名空间名称和类名称相同.

  • 使用extern别名非常有见地的用例. (2认同)