提问人:Ronnie Overby 提问时间:6/24/2009 最后编辑:Luke GirvinRonnie Overby 更新时间:9/17/2019 访问量:10913
这个 C#“using”指令是什么?
What's this C# "using" directive?
问:
我在代码示例中看到了这个 C# using 语句:
using StringFormat=System.Drawing.StringFormat;
这到底是怎么回事?
答:
这是将类型名称别名为较短的名称。相同的语法也可用于别名命名空间。请参阅 using 指令。
(更新以回应理查德)
评论
这意味着您使用 StringFormat 作为 System.Drawing.StringFormat 的别名;
它是一个别名,从现在开始,用户可以使用 StringFormat 来引用 System.Drawing.StringFormat。如果您不想使用整个命名空间(例如,在出现名称冲突问题的情况下),这将很有用。
评论
它是命名空间的别名
这将定义 System.Drawing.StringFormat 的别名。
这与以下示例相同:
using SQL = System.Data.SqlServer;
SQL.SqlConnection sql = new SQL.SqlConnection();
也许在另一个命名空间(如 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 上的使用消除了一些混淆。
using 关键字用于导入命名空间或别名类,或用于管理一次性对象的范围。这里我们讨论的是命名空间的用法。
using StringFormat=System.Drawing.StringFormat;
这里的使用方式在 C# 中有点不寻常,但在 Java import 语句中更常见。它的作用是提供 StringFormat 别名,而不导入整个 System.Drawing 命名空间。一些有 Java 背景的人喜欢主动只导入正在使用的类,而不是整个 anmespaces(又名 Java 包)。可以说,如果只导入特定的类名,可以主动避免潜在的名称冲突,但这在 C# 中并不常见,而且 Visual Studio 不会像 Netbeans 对 Java 那样鼓励这样做。
别名的更常见用途是在存在命名冲突时将类名解析为缩短的别名。
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 */
}
}
评论