15

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

using StringFormat=System.Drawing.StringFormat;

那是怎么回事?

4

7 回答 7

33

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

(更新以回应理查德)

于 2009-06-23T20:46:29.407 回答
13

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

来源:使用 MSDN 的指令文章

于 2009-06-23T20:46:43.790 回答
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 上使用别名可以消除一些混乱。

于 2009-06-23T20:48:23.303 回答
3

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

于 2009-06-23T20:46:40.297 回答
3

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

这和这个例子是一样的:

using SQL = System.Data.SqlServer;

SQL.SqlConnection sql = new SQL.SqlConnection();
于 2009-06-23T20:47:36.550 回答
2

它是命名空间的别名

于 2009-06-23T20:47:28.563 回答
1

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

using StringFormat=System.Drawing.StringFormat;

这里使用的 using 方式在 C# 中有点不寻常,但在 Java 导入语句中更常见。它所做的是提供一个 StringFormat 别名,而无需导入整个 System.Drawing 命名空间。一些具有 Java 背景的人喜欢只导入正在使用的类而不是整个 anmespace(也称为 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 */
    }
}
于 2009-06-23T21:31:44.387 回答