如何使用来自不同函数的(私有)变量?

Posted

技术标签:

【中文标题】如何使用来自不同函数的(私有)变量?【英文标题】:How to use (private) variable from a different function? 【发布时间】:2019-05-09 04:24:09 【问题描述】:

对于完整的上下文,我正在使用 WinForms,首先,我有一个表单,它显示了我在 Hyper-V 管理器上拥有的所有虚拟机,其中有许多与更改此 datagridview 的每个按钮相关联的功能。下面是它的样子:

(忽略名字,都是测试机)

然后右边有一个蓝色的小按钮,上面写着“快照虚拟机”,它会打开一个新表单,您可以为它取一个名字,如下所示:

我想要保存在主窗体上选择的索引(单击按钮之前单击的行),以便我可以从我的 DLL 中调用函数 snapshotVM,如下所示:

public void snapshotVM(string id, string name)
        
            if (name == "") powershellFunc("Get-VM | Where  $_.Id –eq ‘" + id + "’  | Checkpoint-VM");
            else powershellFunc("Get-VM | Where  $_.Id –eq ‘" + id + "’  | Checkpoint-VM -SnapshotName '" + name + "'");
        

(为了澄清,powershellFunc 只是接受 powershell 命令并执行它们)

所以基本上我需要从一个表单中获取string id,从另一个表单中获取string name,或者在同一个表单中从一个函数中获取一个私有变量并在另一个函数中使用它。这就是我的意思:

我需要在下面的按钮内使用index 变量。有什么办法可以“转移”到那里?

最后,如果我应该调用snapshotVM 函数,我应该从哪里调用,或者有任何解决方法吗?任何帮助都将不胜感激,包括要求澄清,因为我觉得这有点混乱而且我没有正确解释,但我会等待修改建议。

【问题讨论】:

【参考方案1】:

只需在类上使用私有变量:

private string _index;
....
public NewSnapshotVM(...)

  ...
  _index = dgv.Rows[...];

...
pirvate void button1_Click(...)

  // use _index as much as you want

【讨论】:

但是即使我在public NewSnapshotVM上定义它,私有函数也会忽略它,当我在那里使用它时它会是空的.. 好吧,没关系,我刚刚测试了它,它工作了!我似乎仍然无法理解为什么,但到目前为止,谢谢你:)

以上是关于如何使用来自不同函数的(私有)变量?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 gmock 模拟修改 C++ 类中的私有变量的成员函数?

如何在 JavaScript 中为私有变量使用与函数参数相同的名称? (使代码看起来更好)

如何使用 jest 模拟私有变量

从 C++ 中的类访问私有变量

如何使用来自不同位置的数据(分类变量)制作统计模型?

如何从 Access VBA 中的另一个私有子获取私有子中声明的变量的值