C# 使用指令时的赋值
我只是找到了下面的代码,不知道为什么要这样做。冲突风险C# 使用指令时的赋值,c#,episerver-6-r2,C#,Episerver 6 R2,我只是找到了下面的代码,不知道为什么要这样做。冲突风险 using DiffTreeNode = EPiServer.Enterprise.Diff.TreeNode; 然后在课堂上,它像往常一样被使用 你为什么要这样做 这是一个使用指令(请参阅),而不是使用语句,类似于使用System.Text 使用语句允许您自动清理东西,而无需使用try/catch/finally块: using (Sometype xyzzy = new SomeType()) { // Do whateve
using DiffTreeNode = EPiServer.Enterprise.Diff.TreeNode;
然后在课堂上,它像往常一样被使用
你为什么要这样做 这是一个
使用
指令(请参阅),而不是使用
语句,类似于使用System.Text代码>
使用
语句允许您自动清理东西,而无需使用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.
看到这个了吗?是的,如果在两个名称空间中有一个树,我个人会使用它。