什么是C#“使用”指令?

我在代码示例中看到了这个C#using语句:

using StringFormat=System.Drawing.StringFormat; 

那是什么意思?

这是将typename别名为较短的名称。 相同的语法也可用于别名命名空间。 请参阅using指令 。

(更新以回应理查德)

它是别名 ,从现在开始,用户可以使用StringFormat来引用System.Drawing.StringFormat 。 如果您不想使用整个命名空间(例如,在名称冲突问题的情况下),这将非常有用。

来源: 使用MSDN的指令文章

也许在另一个名称空间(如Acme.Stuff)中声明了一个不同的,无关的StringFormat。 如果是这种情况,这将导致混淆:

 using System.Drawing; // Contains StringFormat type. using Acme.Stuff; // Contains another StringFormat type. private void Foo() { StringFormat myFormat = new StringFormat(); // which one to use? } 

别名是在StringFormat = System.Drawing.StringFormat上使用 ,清除了一些混乱。

这将定义System.Drawing.StringFormat的别名。

就像这个例子一样:

 using SQL = System.Data.SqlServer; SQL.SqlConnection sql = new SQL.SqlConnection(); 

这意味着你使用StringFormat作为System.Drawing.StringFormat的别名;

它是命名空间的别名

using关键字用于导入名称空间或别名类或用于管理一次性对象的作用域。 这里我们讨论命名空间的用法。

 using StringFormat=System.Drawing.StringFormat; 

这里使用的方式在C#中有点不寻常,但在Java import语句中更常见。 它的作用是提供一个StringFormat别名而不导入整个System.Drawing命名空间。 一些具有Java背景的人喜欢只是简单地导入正在使用的类而不是整个空间(也称为Java包)。 如果你只导入特定的类名,你可以主动避免潜在的名称冲突,但它在C#中并不常见,而Visual Studio也不会像Netbeans那样鼓励它。

更常见的别名用法是在存在命名冲突时将类名解析为缩短的别名。

 using System.Drawing; using AwesomeCompany.ReallyAwesomeStuff.AwesomeLibrary.Drawing; /* AwesomeCompany.ReallyAwesomeStuff.AwesomeLibrary.Drawing has a StringFormat class */ using AwesomeStringFormat = AwesomeCompany.ReallyAwesomeStuff.AwesomeLibrary.Drawing.Stringformat; using StringFormat = System.Drawing.StringFormat; public class AwesomeForm() : Form { private AwesomeForm() { AwesomeStringFormat stringFormat = new AwesomeStringFormat(); stringFormat.Color = Color.Red; /* etc */ } }