这些对象在功能上是否相同?
Are these objects functionally equal?
我正在为表单按钮创建上下文菜单,我遇到了这种实现方式,它与我预期的不同。如果两者之间有什么区别,我能解释一下吗?
我认为它的工作方式:
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;
在第一个版本中,您在 InitializeContextMenu()
中实例化了一个名为 set_is_in_inventory
的新变量,其类型为 ContextMenuStrip
,正如评论者指出的那样,它可能应该是命名为 _setIsInInventory
以遵循 .NET 命名约定。无论如何。您实际上并没有在任何地方使用这个变量。它在方法之外没有作用域,也什么都不做。我想你想要的是设置 class 的 属性。要使 classes' 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 示例中,您可能也会感到困惑的是,class 似乎还有另一个名为 ContextMenuStrip
的 属性,它也在 第二行 。这也被设置为 set_is_in_inventory
。有时 class 属性将它们的名称作为 class 的名称,就像这样(完全合法的语法):
public ClassA {
public Class Class {get;set;}
}
要设置ClassA's
属性Class
,你只需
this.Class = new Class();
或
Class = new Class();
你可以看到这会让人感到困惑,所以很多人只是将 属性 命名为与 class 不同的名字,如下所示:
public ClassA{
public Class MyClass {get;set;}
}
HTH.
我正在为表单按钮创建上下文菜单,我遇到了这种实现方式,它与我预期的不同。如果两者之间有什么区别,我能解释一下吗?
我认为它的工作方式:
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;
在第一个版本中,您在 InitializeContextMenu()
中实例化了一个名为 set_is_in_inventory
的新变量,其类型为 ContextMenuStrip
,正如评论者指出的那样,它可能应该是命名为 _setIsInInventory
以遵循 .NET 命名约定。无论如何。您实际上并没有在任何地方使用这个变量。它在方法之外没有作用域,也什么都不做。我想你想要的是设置 class 的 属性。要使 classes' 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 示例中,您可能也会感到困惑的是,class 似乎还有另一个名为 ContextMenuStrip
的 属性,它也在 第二行 。这也被设置为 set_is_in_inventory
。有时 class 属性将它们的名称作为 class 的名称,就像这样(完全合法的语法):
public ClassA {
public Class Class {get;set;}
}
要设置ClassA's
属性Class
,你只需
this.Class = new Class();
或
Class = new Class();
你可以看到这会让人感到困惑,所以很多人只是将 属性 命名为与 class 不同的名字,如下所示:
public ClassA{
public Class MyClass {get;set;}
}
HTH.