使用其他方法的实例化对象
Use instantiated object from other method
关于 oop 的东西我还没有理解!
可能已经有人问过,但我找不到,我找到的唯一示例是关于使用单例的,但这不是建议的方法。
假设这是我的主要代码:
private void main()
{
Process task1 = null;
task1 = new Process();
task1.StartInfo.FileName = something.bat;
task1.StartInfo.Arguments = string.Format("10");
task1.StartInfo.CreateNoWindow = false;
task1.Start();
task1.WaitForExit();
Update();
}
然后在另一个方法中我需要重新调用已经使用过的同一个对象:
private static void Update()
{
task1.Start();
task1.WaitForExit();
}
此代码可能有错误,但我只需要了解实例概念。
请问有谁能帮忙吗?
谢谢,新年快乐
在两个函数之外全局声明和实例化它,那么你应该可以使用同一个对象,
Process task1 = null;
task1 = new Process();
private void main()
{
task1.StartInfo.FileName = something.bat;
............
}
private void Update()
{
task1.Start();
task1.WaitForExit();
}
或者您可以将变量传递给您的更新方法
void main()
{
Process task1 = null;
task1 = new Process();
task1.StartInfo.FileName = something.bat;
task1.StartInfo.Arguments = string.Format("10");
task1.StartInfo.CreateNoWindow = false;
task1.Start();
task1.WaitForExit();
Update(task1);
}
并在更新方法中
private void update(Process taskin)
{
taskin.Start();
taskin.WaitForExit();
}
如果你想在整个代码中只对单个对象进行操作,你可以使用 Singleton class:
public class SingleProc
{
private static SingleProc instance;
private SingleProc() { }
public Process Proc { get; set; }
public static void RunTillExit()
{
Instance.Proc.Start();
Instance.Proc.WaitForExit();
}
public static SingleProc Instance
{
get
{
if (instance == null)
{
instance = new SingleProc();
}
return instance;
}
}
}
设置属性:
SingleProc.Instance.Proc.StartInfo.FileName = "something.bat";
SingleProc.Instance.Proc.StartInfo.Arguments = string.Format("10");
SingleProc.Instance.Proc.StartInfo.CreateNoWindow = false;
以及您需要的任何地方:致电 RunTillExit
:
SingleProc.RunTillExit();
回答你关于实例概念的问题。它更多地是关于变量的范围而不是实例概念。
private void main()
{
Process task1 = null;
task1 = new Process();
task1.StartInfo.FileName = something.bat;
task1.StartInfo.Arguments = string.Format("10");
task1.StartInfo.CreateNoWindow = false;
task1.Start();
task1.WaitForExit();
Update();
}
在上面的代码中,Process task1 = null;
初始化变量然后在下一行通过 task1 = new Process();
设置它,正如您在 void Main()
方法中所做的那样,现在这些变量范围限于此方法。
Update()
方法是一个完全独立的方法,对 Main()
方法中初始化的变量不可见。如果您需要一个将在同一个 class 上的许多方法中使用的变量,sajeetharan 的回答是正确的,我会补充说,在您的情况下,如果可能,请尝试声明一个私有字段。
要阅读有关范围的更多信息,请查看 - Variables and method scopes in .Net
关于 oop 的东西我还没有理解! 可能已经有人问过,但我找不到,我找到的唯一示例是关于使用单例的,但这不是建议的方法。
假设这是我的主要代码:
private void main()
{
Process task1 = null;
task1 = new Process();
task1.StartInfo.FileName = something.bat;
task1.StartInfo.Arguments = string.Format("10");
task1.StartInfo.CreateNoWindow = false;
task1.Start();
task1.WaitForExit();
Update();
}
然后在另一个方法中我需要重新调用已经使用过的同一个对象:
private static void Update()
{
task1.Start();
task1.WaitForExit();
}
此代码可能有错误,但我只需要了解实例概念。
请问有谁能帮忙吗?
谢谢,新年快乐
在两个函数之外全局声明和实例化它,那么你应该可以使用同一个对象,
Process task1 = null;
task1 = new Process();
private void main()
{
task1.StartInfo.FileName = something.bat;
............
}
private void Update()
{
task1.Start();
task1.WaitForExit();
}
或者您可以将变量传递给您的更新方法
void main()
{
Process task1 = null;
task1 = new Process();
task1.StartInfo.FileName = something.bat;
task1.StartInfo.Arguments = string.Format("10");
task1.StartInfo.CreateNoWindow = false;
task1.Start();
task1.WaitForExit();
Update(task1);
}
并在更新方法中
private void update(Process taskin)
{
taskin.Start();
taskin.WaitForExit();
}
如果你想在整个代码中只对单个对象进行操作,你可以使用 Singleton class:
public class SingleProc
{
private static SingleProc instance;
private SingleProc() { }
public Process Proc { get; set; }
public static void RunTillExit()
{
Instance.Proc.Start();
Instance.Proc.WaitForExit();
}
public static SingleProc Instance
{
get
{
if (instance == null)
{
instance = new SingleProc();
}
return instance;
}
}
}
设置属性:
SingleProc.Instance.Proc.StartInfo.FileName = "something.bat";
SingleProc.Instance.Proc.StartInfo.Arguments = string.Format("10");
SingleProc.Instance.Proc.StartInfo.CreateNoWindow = false;
以及您需要的任何地方:致电 RunTillExit
:
SingleProc.RunTillExit();
回答你关于实例概念的问题。它更多地是关于变量的范围而不是实例概念。
private void main()
{
Process task1 = null;
task1 = new Process();
task1.StartInfo.FileName = something.bat;
task1.StartInfo.Arguments = string.Format("10");
task1.StartInfo.CreateNoWindow = false;
task1.Start();
task1.WaitForExit();
Update();
}
在上面的代码中,Process task1 = null;
初始化变量然后在下一行通过 task1 = new Process();
设置它,正如您在 void Main()
方法中所做的那样,现在这些变量范围限于此方法。
Update()
方法是一个完全独立的方法,对 Main()
方法中初始化的变量不可见。如果您需要一个将在同一个 class 上的许多方法中使用的变量,sajeetharan 的回答是正确的,我会补充说,在您的情况下,如果可能,请尝试声明一个私有字段。
要阅读有关范围的更多信息,请查看 - Variables and method scopes in .Net