【发布时间】:2011-01-20 11:20:03
【问题描述】:
使用命名空间别名有什么好处?只是为了简化编码有好处吗?
【问题讨论】:
标签: c# namespaces
使用命名空间别名有什么好处?只是为了简化编码有好处吗?
【问题讨论】:
标签: c# namespaces
正如其他人所说,当您必须同时导入多个命名空间时,它有助于消除类型的歧义。
这似乎违背了其他人的意见,但它也可能有助于澄清两个领域之间的范围:
using Gilco.Test.ProjectX;
using DevCode = Gilco.Nilfum.Alpha.ProjectX;
public class MyTests
{
public void TestCase1()
{
var car = new DevCode.Car();
var testCar = new TestCar();
}
}
在极少数情况下,当您必须指定命名空间(用于消除歧义)时,它也可能很有用,您的命名空间不会太长以证明别名的合理性,但可能很快就会改变(比如当您使用命名空间时)同时支持两个版本的代码路径):
using DevCode = Gilco.V1;
【讨论】:
仅当我与类发生冲突时,我才使用命名空间别名。 对我来说,这根本没有简化。 我的意见:没必要就不要用了。
【讨论】:
在类型名称冲突的情况下,使用别名将使您不必使用完全限定名称。例如,名称 TextBox 用于以下两个命名空间。
System.Windows.Forms.TextBox
System.Web.UI.WebControls.TextBox
依赖于 using 声明的顺序将是相当脆弱的,并且只会对其中一个命名空间有所帮助。最好为每个命名空间分配一个别名。
【讨论】:
命名空间别名对于解决代码中两个或多个同名类的歧义很有用。例如,您的 winform 中有 Button 类,并且您的第三个库中也有 Button 类。当您的代码引用 Button 时,您可能希望将其量化为来自第 3 方,并且不想将完整的长文本放在任何地方,而是使用别名 using CompanyX = CompanyX.UI.Animated.Control ... CompanyX.Button
事实上,我只是在早期的工作项目中使用它来使我的代码更具可读性。我使用 Office Word 自动化,而不是在任何地方都定义变量 Application 并且很难将它与我的实际 Application 类区分开来,我使用 Word=Microsoft.Office.Interop.Word 定义,并且在代码中我可以说 Word.Application 来引用 Word 应用程序对象
【讨论】:
当你有冲突时,它们很有用。例如,如果你有 NamespaceA.Jobber 和 NamespaceB.Jobber 类型,并且想在同一个类中使用它们,你将不能只为 NamespaceA 和 NamespaceB 添加 using 语句,因为这样编译器不会'如果您输入Jobber,不知道您指的是什么。在这种情况下,您将为其中一个或两个命名空间提供别名。
这可以使您的代码更清晰,尤其是在命名空间较长的情况下,因为另一种方法是在每次使用类型时都写出整个命名空间。
【讨论】:
afaik 当您创建命名空间别名时 - 每个别名的静态变量值是它自己的,不依赖于其他别名 + 简化
【讨论】:
当使用两个同名的类时,我一般只使用命名空间别名。
【讨论】: