我似乎有点困惑以下调用的工作方式:

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/

10-12 20:49