2017-02-27 16 views
0

私は短い同義語で型名を付けました。 私は(関係ない)何とかそのこの新しい短い名前を経由して、このタイプを使用しようと次の行に:型同義語を使用しています原因CS0246型または名前空間の名前...が見つかりませんでした

using A = SomeTypeName; 
using B = A; 

しかし、2行目では、コンパイラは「」&はエラーを生成名前が表示されません。 (タイトルを参照)。 なぜですか?

+2

これは許可されていないためです。ドキュメントをチェックしてください:https://msdn.microsoft.com/en-us/library/aa664765(v=vs.71).aspx - 最後の例を参照して、名前空間/型エイリアス別のエイリアスの一部として機能しません。言葉はちょっと混乱しますが、基本的にコンパイラは同じコンパイル単位で以前に定義されたエイリアスを適用せずに型/名前空間Aを解決しようとしています。 – PaulF

答えて

2

ECMA-334 9.4.1言うエイリアスディレクティブを使用:

使用して、エイリアスディレクティブが書き込まれる順序は、名前空間または型名のない 意義、および解像度を持っていませんusing-alias-directiveによって参照される は、 using-alias-directive自体またはコンパイル単位または名前空間の本文をすぐに含む の他のusing-directivesの影響を受けません。 という単語では、using-alias-directiveのnamespace-or-type-nameは と解決済みのように、すぐに含まれているコンパイル単位または 名前空間本体には使用指示がありませんです。 using-alias-directiveは ですが、すぐに コンパイル単位または名前空間の本文を含むextern-alias-directivesの影響を受けることがあります。

関連する問題