我正在为表单按钮创建一个上下文菜单,我遇到了这种实现它的方式,它与我预期的不同。如果有的话可以解释两者之间的差异吗?
我认为它的工作方式:
private void InitializeContextMenu()
{
System.Windows.Forms.ContextMenuStrip set_is_in_inventory = new System.Windows.Forms.ContextMenuStrip();
}
private System.Windows.Forms.ContextMenuStrip set_is_in_inventory;
我在msdn上找到的方式:
private void InitializeContextMenu()
{
set_is_in_inventory = new System.Windows.Forms.ContextMenuStrip();
this.ContextMenuStrip = set_is_in_inventory;
}
private System.Windows.Forms.ContextMenuStrip set_is_in_inventory;
答案 0 :(得分:1)
在第一个版本中,您已在InitializeContextMenu()
中实例化了一个名为set_is_in_inventory
的新变量,其类型为ContextMenuStrip
,正如评论者所指出的那样,它应该被命名为_setIsInInventory
遵循.NET命名约定。无论如何。你实际上并没有在任何地方使用这个变量。它没有方法之外的范围,也没有做任何事情。我认为你想要的是设置类的属性。要使类set_is_in_inventory
属性成为您刚刚实例化的属性,您需要执行
private void InitializeContextMenu(){
{
this.set_is_in_inventory = new System.Windows.Forms.ContextMenuStrip();
}
或者可选地,
set_is_in_inventory = new System.Windows.Forms.ContextMenuStrip();
这是MSDN示例中的第一行。在MSDN示例中,您可能会感到困惑的是,该类看起来还有另一个名为ContextMenuStrip
的属性,该属性也在第二行中设置。这也被设置为set_is_in_inventory
。有时类属性的名称是类的名称,如此(完全合法的语法):
public ClassA {
public Class Class {get;set;}
}
要设置ClassA's
属性 Class
,您只需
this.Class = new Class();
或
Class = new Class();
您可以看到这可能会让人感到困惑,因此很多人只是将该属性命名为与类名不同,如下所示:
public ClassA{
public Class MyClass {get;set;}
}
HTH。