C#では、自動生成コードでかなり頻繁に使用されるglobal::
を参照してください。私が今までに使ったことではないので、目的が分からない。誰かがこれを説明できますか?グローバル::とは何ですか?
答えて
グローバルは、グローバル名前空間を参照して、タイプを再定義できる問題を解決するために使用できます。たとえば:あなたはそれがローカルにfooのクラスにスコープされるだろうシステムを使用した場合
class foo
{
class System
{
}
}
は、あなたが使用できます。
global::System.Console.WriteLine("foobar");
はグローバル名前空間にアクセスすること。
例
using System;
class Foo
{
public void baz()
{
Console.WriteLine("Foo 1");
}
}
namespace Demo
{
class Foo
{
public void baz()
{
Console.WriteLine("Foo 2");
}
}
class Program
{
protected static global::Foo bar = new global::Foo();
static void Main(string[] args)
{
bar.baz(); // would write Foo 1 to console as it refers to global scope
Foo qux = new Foo();
qux.baz(); // would write Foo 2 to the console as it refers to the Demo namespace
}
}
}
グローバルな名前空間がプレフィックスされたクラスを持つ自動生成クラスがあり、そのクラスがFooと呼ばれていたらどうなりますか?名前空間なしでFooとも呼ばれたクラスを作成しましたか? –
自動生成されたクラスの先頭にグローバル名前空間があり、Fooという名前だった場合、globalはグローバル名前空間のクラスを参照します。任意の名前空間に同じ名前の定義が1つしか存在できません。 Fooの別の意味を定義するために別の名前空間からクラスのインスタンスを作成する場合は、ローカルスコープが最も大きくなります。編集 – chrisw
これは、いつも必要なプレフィックスで、ルート名前空間を示します。
ユーザーコードと名前の衝突を避けるために、生成されたコードによく追加されます。
たとえば、System
というクラスがあるとしますが、System.String
を使用するとします。差別化のためにglobal::System.String
を使用できます。
::
は、名前空間セパレータとして使用されているC++から来ていると思います。
実際には、私はコードを生成する以外にこれを使用したことはありません。エイリアスを使用していくつかの競合を回避することもできます。たとえば、using String = System.String;
global
コンテンツキーワード、それは::演算子の前に来たときに、任意のC#プログラムのデフォルトの名前空間で、そうでない場合は、名前のあるグローバル名前空間を指します。
global::
指定子は、ルートから始まる名前空間またはクラスの検索を開始するようにコンパイラに指示します。コードが常に動作するように、システム生成コードに表示されます。そうすれば、コードがアクセスしようとしている最上位の名前空間と同じ現在の名前空間のすぐ下に名前空間がある場合、矛盾はありません。
たとえば、ネームスペースAのクラスを参照する必要があるネームスペースB.Aにコードを書き込むと、ネームスペースAとネームスペースBとネームスペースB.Aがあります。グローバルにはアクセスできません。 A.classnameを参照すると、コンパイラはB.A.でclassnameを探します。 global ::私はglobal :: A.classnameでclassnameを探すように指示することができ、適切な場所にclassnameを見つけることができます。
を参照してください。オンラインリソースからコンテンツを取得する場合は、適切な属性を提供するのに十分親切にしてください:[MSDN](http://msdn.microsoft。com/en-us/library/cc713620.aspx)と[C#のグローバルキーワードは何ですか](http://blog.dmbcllc.com/what-is-the-global-keyword-in-csharp/) – Bart
k ..あなたのコメントのためのバートのおかげです。私が次回に答えているとき、私は心に留めています。しかし、なぜそのダウンボートですか? – coder
それは私のものではありません。 – Bart
- 1. devDependenciesをグローバルにインストールするnpmコマンドとは何ですか?
- 2. 弱いグローバル参照は何ですか?それはグローバル参照とどのように違うのですか?
- 3. Cのポインタとグローバル変数の違いは何ですか?
- 4. 何グローバル:: :: C#でのグローバル何を立つん
- 5. drupalで使用できるグローバル定数と関数は何ですか
- 6. C++の静的グローバル識別子と静的グローバル識別子の違いは何ですか?
- 7. PHP $ GLOBALS ['variable']の違いは何ですか?グローバル$変数。
- 8. Rubyの番号付きグローバル変数は何ですか
- 9. javascriptで不要なグローバル変数を検出する方法は何ですか
- 10. グローバル(function(global){some code ..})(this)は何をしますか?
- 11. Androidで何らかのグローバル例外ハンドラを作成することはできますか?
- 12. "x-frame-options:deny"ヘッダーをグローバルに追加するものは何ですか?
- 13. Pythonモジュールの場合、宣言する標準グローバル変数は何ですか?
- 14. エンティティがグローバル変数にアクセスするためのベストプラクティスは何ですか?
- 15. ステートレスセッションBeanにグローバル変数を設定する際のポイントは何ですか?
- 16. MySQL、ビューはグローバルかセッション/接続ごとですか?
- 17. Backbone.js - グローバル/共有/関連モデルの最適なアプローチは何ですか?
- 18. CLLocationManagerをグローバル変数に固定しない理由は何ですか?
- 19. グローバルまたは「悪」シングルトンには何かの点がありますか?
- 20. キーボードフォーカスイベントをグローバルに検出することはできますか?
- 21. IPM.Noteとは何ですか?その用途は何ですか?
- 22. @privateとは何ですか?その用途は何ですか?
- 23. コピーオンライトとは何ですか?
- 24. @AttributeOverrideとは何ですか?
- 25. スケジューリングジッタとは何ですか?
- 26. プログレッシブエンハンスメントとは何ですか?
- 27. 「ベンチテストコード」とは何ですか?
- 28. タイプセーフティとは何ですか?
- 29. 「ラムダリフティング」とは何ですか?
- 30. rgbReservedとは何ですか?
http://stackoverflow.com/questions/3552763/why-use-global-keyword-in-net –
msdnから:http://msdn.microsoft.com/en-us/library/c3ay4x3d.aspx –