我剛剛發現了下面的代碼,不知道爲什麼這樣做。衝突風險?指定使用指令
using DiffTreeNode = EPiServer.Enterprise.Diff.TreeNode;
然後在課堂上它照常使用。
你爲什麼要這樣做?
我剛剛發現了下面的代碼,不知道爲什麼這樣做。衝突風險?指定使用指令
using DiffTreeNode = EPiServer.Enterprise.Diff.TreeNode;
然後在課堂上它照常使用。
你爲什麼要這樣做?
這是一個using
指令(見here),而不是一個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;
以下兩個語句是等價的:
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這樣的人確認或否認:-),這是爲了說明具有兩個或多個名稱空間類型相同的命名空間。這將使:
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.
是的,我個人使用它,如果你在兩個命名空間有樹。 – Carra
看到這個http://stackoverflow.com/questions/75401/uses-of-using-in-c-sharp – yogi