这是什么 C# 的 "using" 指令?

16

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

using StringFormat=System.Drawing.StringFormat;

那是什么意思?


1
为了帮助防止命名空间混淆 - Josh Stodola
1
在这个例子中,它“导入”了StringFormat类名称,而没有导入System.Drawing命名空间的其余成员。 - Brian Reiter
7个回答

33
这是将类型名称别名为较短的名称。相同的语法也可用于命名空间别名。请参见using指令
(根据Richard的回应进行更新)

命名空间或类型别名,确切地说。 - Richard Anthony Freeman-Hein
这是一种通常接受的命名自己的泛型的方式吗?例如,使用DestinationMap = System.Collections.Generic.Dictionary<string,Destination>; - nos
@noselasd:不,这不是常见的做法。当然,如果你想这么做,你可以,但我强烈建议不要这样做,因为这会非常令人困惑...最好创建一个继承自Dictionary<string, Destination>的DestinationMap类。 - Thomas Levesque

13

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

来源:MSDN 的 using Directive 文章


1
我本来想说使用相同的名称没有意义,但是既然你提到它将避免包含整个命名空间,那么这确实有意义。如果没有这一点,其他答案就不完整了。 - Richard Anthony Freeman-Hein

7
也许在另一个命名空间中(如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可以消除Aliasing问题,这使得内容更加清晰易懂。


3

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

这与以下示例相同:

using SQL = System.Data.SqlServer;

SQL.SqlConnection sql = new SQL.SqlConnection();

3
这意味着您将StringFormat用作System.Drawing.StringFormat的别名;

2

这是一个命名空间的别名。


1

using 关键字用于导入命名空间或别名类,或用于管理可释放对象的作用域。这里我们谈论的是命名空间的使用。

using StringFormat=System.Drawing.StringFormat;

这里使用的方式在C#中有些不寻常,但在Java的导入语句中更常见。它的作用是提供一个StringFormat的别名,而不是导入整个System.Drawing命名空间。一些具有Java背景的人喜欢主动地仅导入所使用的类,而不是整个命名空间(也称为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 */
    }
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接