【发布时间】:2023-03-15 04:10:02
【问题描述】:
我正在为表单按钮创建上下文菜单,我遇到了这种实现方式,它与我的预期不同。如果有的话,我能解释一下两者之间的区别吗?
我认为它的工作方式:
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;
【问题讨论】:
-
MSDN 将其分配给表单以便它实际出现,您所要做的就是创建对象。或许您可以解释为什么您认为您的方法可行,我们可以回答更根本的误解?
-
顺便说一句,现在是熟悉 .NET 命名约定并开始遵循它们的好时机。
-
第一个版本很奇怪。您有一个同名的本地和私有字段。您从不使用(AFAICT)私有字段。这个名字是巧合。您声明了两个不同的引用,它们不是同一个引用。还有 JS 关于命名约定的说法。
_setIsInInventory是约定。 -
@BradleyDotNET :我认为最后一条语句是通知编译器存在这样的项目,而包装函数实际上创建了它。在第二个示例中,似乎将项目分配给了一个类型。 (我刚学过C,所以我的词汇量可能不够)
标签: c# initialization declaration assign