在C#中,
A::B
和A.B
之间有什么区别?我注意到的唯一区别是只有::
可以与global
一起使用,但除此之外,它们有什么区别?为什么它们都存在?A::B
和A.B
之间有什么区别?我注意到的唯一区别是只有::
可以与global
一起使用,但除此之外,它们有什么区别?为什么它们都存在?::运算符只能与别名一起使用,global是提供的特殊系统别名。
所以...这样可以:
using Foo = System.ComponentModel;
public MyClass {
private Foo::SomeClassFromSystemComponentModel X;
}
但不包括这个:
public MyClass {
private System.ComponentModel::SomeClassFromSystemComponentModel X;
}
namespace MyAwesomeProduct.System
{
}
using MyAwesomeProduct;
global:: 可以让你找到真正的 System。
通过使用::,您可以完成以下操作...
extern alias X;
extern alias Y;
class Test
{
X::N.A a;
X::N.B b1;
Y::N.B b2;
Y::N.C c;
}
有时候“.”是不明确的,所以需要使用“::”。以下是来自C#语言规范的示例:
namespace N
{
public class A {}
public class B {}
}
namespace N
{
using A = System.IO;
class X
{
A.Stream s1; // Error, A is ambiguous
A::Stream s2; // Ok
}
}
::
只能用于命名空间,而 .
可以用于除了 global
以外的所有东西? - user541686
global::
很有用,但并没有说明::
和.
之间的区别... - user541686