私は次のコードを見つけましたが、なぜこのように行われるのかわかりません。紛争のリスク?
using DiffTreeNode = EPiServer.Enterprise.Diff.TreeNode;
そして、クラスでは通常どおりに使用されます。
なぜあなたはこのようなことをするのですか?
私は次のコードを見つけましたが、なぜこのように行われるのかわかりません。紛争のリスク?
using DiffTreeNode = EPiServer.Enterprise.Diff.TreeNode;
そして、クラスでは通常どおりに使用されます。
なぜあなたはこのようなことをするのですか?
これはステートメントではなくusing
ディレクティブ(ここusing
を参照)であり、のようなものに非常に似ていusing System.Text;
ます。
using
ステートメントを使用すると、try/catch/finally
ブロックをいじることなく、自動的にクリーンアップできます。
using (Sometype xyzzy = new SomeType()) {
// Do whatever with xyzzy
}
// xyzzy is gone, pining for the fjords.
using
ディレクティブは名前空間をインポートするため、名前空間を明示的に使用してその中のすべてのタイプにプレフィックスを付ける必要はありません。特定のバリアントは基本的に名前空間のエイリアスを作成するため、そのポイントを超えているEPiServer.Enterprise.Diff.TreeNode
と単純に参照できます。DiffTreeNode
言い換えれば、ディレクティブの後:
using DiffTreeNode = EPiServer.Enterprise.Diff.TreeNode;
次の2つのステートメントは同等です。
EPiServer.Enterprise.Diff.TreeNode.SomeType xyzzy =
new EPiServer.Enterprise.Diff.TreeNode.SomeType();
DiffTreeNode.SomeType xyzzy = new DiffTreeNode.SomeType();
どちらを入力したいかがわかります。
ここで、ディレクティブで名前空間内の型を単独で使用できるのであれば、なぜそれを行わないのかと疑問に思われるかもしれません。
using EPiServer.Enterprise.Diff.TreeNode;
SomeType xyzzy = new SomeType();
私の賭けは、Jon Skeetのような人たちがこれを確認または否定するのを待つが、同じ名前のタイプを持つ2つ以上の名前空間がある場合をカバーすることだろう:-)。それは可能になります:
using Bt = Trees.BinaryTree; // Has Tree type.
using Rbt = Trees.RedBlackTree; // Annoyingly, also has Tree type.
Tree t = new Tree(); // Is this binary or redbalck?
Bt.Tree t1 = new Bt.Tree(); // Definite type.
Rbt.Tree t2 = new Rbt.Tree(); // Ditto.