不明确的参考建议

时间:2012-08-25 15:22:21

标签: c# scope

以下代码行

TreeView treeview = (TreeView)currentGroup.Content;

列出错误

  

'TreeView'是“System.Windows.Forms.TreeView”和“System.Windows.Controls.TreeView

之间的含糊不清的引用

我知道原因,因为我需要明确说明要使用哪个引用,因为它们都有TreeView,例如:

System.Windows.Controls.TreeView treeview = (System.Windows.Controls.TreeView)currentGroup.Content;

这是什么最佳做法?如果通过多种方法广泛使用,是否有另一种(更整洁的)方式来定义哪个引用TreeView必须使用?

4 个答案:

答案 0 :(得分:6)

例如,如果您特别使用System.Windows.Forms.TreeView,则只需添加

using TreeView = System.Windows.Forms.TreeView;

进入你的using语句列表,默认情况下,当你使用System.Windows.Forms.TreeView时,编译器会假设TreeView

答案 1 :(得分:3)

using声明中使用别名:

using WF = System.Windows.Forms;
using WC = System.Windows.Controls;

然后你可以简单地使用:

WF::TreeView tv1;

WC::TreeView tv2;

双冒号强制将前缀视为命名空间,因此即使您创建了一个名为WF的类,该别名仍然有效。

答案 2 :(得分:1)

由于您正在投射,您还可以使用 var 关键字保存一些输入内容。

var treeview = (System.Windows.Controls.TreeView)currentGroup.Content;

答案 3 :(得分:1)

简易解决方案:var treeview = currentGroup.Content;


解决方案,如果您无法使用var:在文件的顶部将using System.Windows.Controls;更改为using cntrl = System.Windows.Controls;,这会产生别名,因此这会将原始示例更改为

cntrl.TreeView treeView;
treeView = (cntrl.TreeView)currentGroup.Content;

如果必须投出Content,您可以将两者合并到

var treeView = (cntrl.TreeView)currentGroup.Content;