代码之家  ›  专栏  ›  技术社区  ›  Ronnie Overby

这个“使用”指令是什么?

  •  13
  • Ronnie Overby  · 技术社区  · 15 年前

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

    using StringFormat=System.Drawing.StringFormat;
    

    这是怎么回事?

    7 回复  |  直到 15 年前
        1
  •  32
  •   Sean    15 年前

    这就是将一个类型名化名为一个较短的名称。同样的语法也可以用于命名名称空间。见 using directive .

    (针对Richard更新)

        2
  •  13
  •   Scott Ivey    15 年前

    这是一个 别名 ,从现在起,用户可以使用 串格式 系统.绘图.字符串格式 . 如果您不想使用整个名称空间(例如,在名称冲突的情况下),这将非常有用。

    来源: using Directive article from MSDN

        3
  •  7
  •   Richard    15 年前

    可能在另一个命名空间(如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?
    }
    

    别名与 using 在StringFormat=System.Drawing.StringFormat上清除 一些 在混乱中。

        4
  •  3
  •   Zanoni    15 年前

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

    就像这个例子一样:

    using SQL = System.Data.SqlServer;
    
    SQL.SqlConnection sql = new SQL.SqlConnection();
    
        5
  •  2
  •   Fiur    15 年前

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

        6
  •  2
  •   Warrior    15 年前

    它是名称空间的别名

        7
  •  1
  •   Richard    15 年前

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

    using StringFormat=System.Drawing.StringFormat;
    

    这里使用的方式在C语言中有点不寻常,但在Java导入语句中更常见。它所做的是在不导入整个System.Drawing命名空间的情况下提供StringFormat别名。一些具有Java背景的人喜欢主动地导入所使用的类而不是整个的ANSMESPACE(又名Java包)。如果你只导入特定的类名,但在C语言中并不常见,VisualStudio不会鼓励它,比如NETBeaS,那么你可以主动避免潜在的名字冲突。

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

    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 */
        }
    }