在C#中,A::B
和A.B
有什麼區別?我注意到的唯一區別是隻有::
可以與global
一起使用,但除此之外,有什麼區別?他們爲什麼都存在?範圍解析運算符::與成員訪問運算符的比較。在C#
7
A
回答
5
與::你可以做這樣的事情......
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
}
}
6
::運算只適用於全球的別名是別名提供一個特殊的系統的例子。
所以......這個工程:
using Foo = System.ComponentModel;
public MyClass {
private Foo::SomeClassFromSystemComponentModel X;
}
但不是這樣的:
public MyClass {
private System.ComponentModel::SomeClassFromSystemComponentModel X;
}
這讓當您使用的是庫集成從子命名空間的地獄可以來逃生他們有:
namespace MyAwesomeProduct.System
{
}
而你在你的代碼有
using MyAwesomeProduct;
global ::讓你找到真正的系統。
相關問題
- 1. 範圍解析運算符的評估
- 2. Ruby比較運算符? ==與===
- 3. 比較運算符問題
- 4. 比較運算符
- 5. 比較運算符
- 6. 比較運算符
- 7. 運算符重載「運算符T *()」產生比較運算符?
- 8. C++中的全範圍比較運算符?
- 9. 在c + +運算符重載(比較運算符)
- 10. 關於範圍解析運算符在C++中的困惑
- 11. C字符串的比較運算符
- 12. &的範圍解析運算符之前的&符號在PHP
- 13. 如何get_class()與範圍解析運算符在PHP中?
- 14. C++成員vs非成員運算符+
- 15. 相當於範圍解析運算符的C#或VBNET?
- 16. Javascript:使用邏輯運算符與比較運算符
- 17. JavaScript的比較運算符
- 18. 在C++中重載比較運算符
- 19. 爲什麼C++範圍解析運算符::?
- 20. 範圍爲%Mod運算符
- 21. C#中的比較運算符
- 22. weak_ptr中的比較運算符C++
- 23. 重載比較運算符
- 24. 多個比較運算符
- 25. PowerShell比較運算符
- 26. TypeTag和比較運算符?
- 27. 比較運算符!==對0
- 28. 比較位運算符
- 29. Python比較運算符
- 30. 邏輯比較運算符
所以你說``::僅與命名空間的作品,而`.`與除一切正常`global`? – Mehrdad 2011-01-19 04:22:40
是的,::僅用於名稱空間的事實意味着您可以使用它來解決無法解決的歧義。 – 2011-01-19 04:25:55