是 alias::Class 与 alias.Class 有任何不同

本文关键字:Class alias 任何不 | 更新日期: 2023-09-27 18:31:11

我一直在阅读一些"隐藏的C#功能"的东西,2011年有关于这个的帖子:

using web = System.Web.UI.WebControls;
using win = System.Windows.Forms;
web::Control aWebControl = new web::Control();
win::Control aFormControl = new win::Control();
我一直

在这样使用它:

using xna = Microsoft.Xna.Framework;
using sd = System.Drawing;
var rect = new xna.Rectangle();
var bounds = new sd.Rectangle();

在别名上使用 :: 运算符和.运算符之间有什么显着区别吗?有什么事情你可以(不能)只用其中一个做什么吗?

是 alias::Class 与 alias.Class 有任何不同

只有两个区别(IIRC)。

第一个区别是::只能与别名一起使用。

唯一另一个真正的区别是::可用于访问 global 命名空间,因为它是隐式别名的。

所以这行不通:

System::Int32 myInt = 0;

但是这个(尽管毫无意义的例子)会起作用:

using System = global::System;
System::Int32 myInt = 0;