我在代码示例中看到了这个 C# using 语句:
using StringFormat=System.Drawing.StringFormat;
那是怎么回事?
我在代码示例中看到了这个 C# using 语句:
using StringFormat=System.Drawing.StringFormat;
那是怎么回事?
这将类型名别名为较短的名称。相同的语法也可用于命名空间的别名。请参阅使用指令。
(更新以回应理查德)
它是一个别名,从现在开始,用户可以使用StringFormat来引用System.Drawing.StringFormat。如果您不想使用整个命名空间(例如,在名称冲突问题的情况下),它会很有用。
也许在另一个命名空间(如 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 上使用别名可以消除一些混乱。
这意味着您使用 StringFormat 作为 System.Drawing.StringFormat 的别名;
这将定义 System.Drawing.StringFormat 的别名。
这和这个例子是一样的:
using SQL = System.Data.SqlServer;
SQL.SqlConnection sql = new SQL.SqlConnection();
它是命名空间的别名
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 */
}
}