2017-09-01 14 views
4

私はusingディレクティブを使用して、コードを読みやすくするために機能的に型を定​​義しようとしています。のは、私のexample.csファイルはこのようになっていることを言ってみましょう:ネストされた型定義のためのディレクティブの使用

using A = System.Tuple<int, int>; 
using B = List<A>; 

私はエラーを取得する:

CS0246 The type or namespace name 'A' could not be found (are you missing a using directive or an assembly reference?)

私はusingとネストされたタイプを定義することができるか、それは可能ではないでしょうか?

+4

'B = System.Collections.Generic.List >を使用しています。あなたが使用して別の使用することはできません、常に型名を完全に指定します。 'A'を定義するときにこれを経験したことがありますか? 'using System;'はエラーを修正できません。 – Sinatr

+1

@SzymonPajzert、私はあなたが気にしないことを願っていますが、あなたの言い換えバージョンを置き換えるために.csファイルにドロップしたときにあなたのコードスニペットから生成されたエラーを追加しました。私はあなたの質問をより簡単に見つけることができるようにこれを行っています。あなたの質問を誤って解釈したために別のエラーが発生した場合は、アップデートをロールバックしてください。具体的なエラー=) – Rob

答えて

4

C#言語仕様docs.microsoft.comに、Using directiveをカバー部分を持っている、特にあなたが使用しようとしているディレクティブを使用してのタイプは「Using alias directive」です:

A using_alias_directive (Using alias directives) introduces an alias for a namespace or type.

ドキュメントのハイライトこれが唯一の「namespace_or_type_name」ですが、別の「using_alias_directive」の使用を許可していない何かを許可することを

using_alias_directive 
    : 'using' identifier '=' namespace_or_type_name ';' 
    ; 

注:using_alias_directiveなどの許可された構造。あなたは、私は怖い、別のエイリアスにエイリアスを使用することはできません、要するに

The order in which using_alias_directives are written has no significance, and resolution of the namespace_or_type_name referenced by a using_alias_directive is not affected by the using_alias_directive itself or by other using_directives in the immediately containing compilation unit or namespace body. In other words, the namespace_or_type_name of a using_alias_directive is resolved as if the immediately containing compilation unit or namespace body had no using_directives

:のための可能性が高い理由の一つは、これはそれらのドキュメント(強調鉱山)の途中で見つけることができます。

+0

リファクタリングツールの作者はすべて、 "ディレクティブ"を使用して整理/整列する機能を備えています。 –

+0

@JeroenMostert、それは世紀の控えめな表現です! =) – Rob

関連する問題