我似乎有点困惑以下调用的工作方式:
string str = Process.GetCurrentProcess().MainModule.ModuleName;
我知道这与执行以下操作相同:
Process pvar = new Process();
ProcessModule pmvar = pvar.MainModule;
string str2 = pmvar.ModuleName;
但是我需要详细解释如何进行扩展。因为我尚未显式创建Process类的实例,所以请在类ProcessModule中调用MainModule的非静态属性!
GetCurrentProcess()方法是否会自动创建一个即时实例,因为不需要这样做?
最佳答案
您尚未创建Process
的实例,但这将为您返回一个实例:
Process process = Process.GetCurrentProcess();
这与第二个片段中的
new Process()
调用非常不同。因此,您的第一个语句实际上等效于:Process process = Process.GetCurrentProcess();
ProcessModule module = process.MainModule;
string moduleName = module.ModuleName;
GetCurrentProcess()
返回对表示当前正在执行的进程的Process
对象的引用。关于c# - 这里会发生什么:Process.GetCurrentProcess()。MainModule.ModuleName ;?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8274456/