从 VB.NET 转换为 C# 时无法分配给,因为它是一个方法组
Cannot assign to because it's a method group, when converting from VB.NET to C#
代码如下:
public abstract class OSHelper
{
public static bool IsAppAlreadyRunning()
{
IsAppAlreadyRunning = false;
try
{
// Current Running Process (this launched app)
string currentRunningProcessName = Process.GetCurrentProcess().ProcessName;
// Get ALL Running Processes
Process[] allRunningProcessNames = Process.GetProcessesByName(currentRunningProcessName);
if (allRunningProcessNames.Length > 1)
IsAppAlreadyRunning = true;
}
catch (Exception ex)
{
// Log.Write(ex);
}
}
}
当我尝试将 false 分配给 IsAppAlreadyRunning
时失败?
已将 VB.NET 代码转换为 C# ... 在 VB.NET 中运行良好,但 C# 似乎有问题?在 VB.NET 中,这基本上是一个 class,不需要实例来访问它的方法。
我错过了什么?或者这只是 C# 不支持的东西?
VB.NET returns 通过将值分配给方法名称来从方法中获取值。
C# 不是那样工作的。请改用 return
语句。
public static bool IsAppAlreadyRunning()
{
try
{
// Current Running Process (this launched app)
string currentRunningProcessName = Process.GetCurrentProcess().ProcessName;
// Get ALL Running Processes
Process[] allRunningProcessNames = Process.GetProcessesByName(currentRunningProcessName);
if (allRunningProcessNames.Length > 1)
return true;
// Or replace above 2 lines with
// return allRunningProcessNames.Length > 1;
}
catch (Exception ex)
{
// Log.Write(ex);
}
return false;
}
IsAppAlreadyRunning
是 C# 代码中的一个函数,因此您不能分配给它。试试这个:
public static bool IsAppAlreadyRunning()
{
bool retVal = false;
try
{
// Current Running Process (this launched app)
string currentRunningProcessName = Process.GetCurrentProcess().ProcessName;
// Get ALL Running Processes
Process[] allRunningProcessNames = Process.GetProcessesByName(currentRunningProcessName);
if (allRunningProcessNames.Length > 1)
{
retVal = true;
}
}
catch (Exception ex)
{
// Log.Write(ex);
}
return retVal;
}
- 方法和变量不能共享名称。将其重命名为其他名称。
- 您需要声明变量,即 bool IsAppAlreadyRunningVar = false;
- 您需要确保每个代码路径中的 return 值 (bool)。如果此条件
if (allRunningProcessNames.Length > 1)
失败会怎样?
方法的名称是 IsAppAlreadyRunning。您不能将 true/false 分配给它。
我猜您想确定是否有具有指定进程名称的活动进程。
试试这个:
public abstract class OSHelper
{
public static bool IsAppAlreadyRunning()
{
try
{
// Current Running Process (this launched app)
string currentRunningProcessName = Process.GetCurrentProcess().ProcessName;
// Get ALL Running Processes
Process[] allRunningProcessNames = Process.GetProcessesByName(currentRunningProcessName);
return allRunningProcessNames.Length > 1;
}
catch (Exception ex)
{
// Log.Write(ex);
}
return false;
}
}
代码如下:
public abstract class OSHelper
{
public static bool IsAppAlreadyRunning()
{
IsAppAlreadyRunning = false;
try
{
// Current Running Process (this launched app)
string currentRunningProcessName = Process.GetCurrentProcess().ProcessName;
// Get ALL Running Processes
Process[] allRunningProcessNames = Process.GetProcessesByName(currentRunningProcessName);
if (allRunningProcessNames.Length > 1)
IsAppAlreadyRunning = true;
}
catch (Exception ex)
{
// Log.Write(ex);
}
}
}
当我尝试将 false 分配给 IsAppAlreadyRunning
时失败?
已将 VB.NET 代码转换为 C# ... 在 VB.NET 中运行良好,但 C# 似乎有问题?在 VB.NET 中,这基本上是一个 class,不需要实例来访问它的方法。
我错过了什么?或者这只是 C# 不支持的东西?
VB.NET returns 通过将值分配给方法名称来从方法中获取值。
C# 不是那样工作的。请改用 return
语句。
public static bool IsAppAlreadyRunning()
{
try
{
// Current Running Process (this launched app)
string currentRunningProcessName = Process.GetCurrentProcess().ProcessName;
// Get ALL Running Processes
Process[] allRunningProcessNames = Process.GetProcessesByName(currentRunningProcessName);
if (allRunningProcessNames.Length > 1)
return true;
// Or replace above 2 lines with
// return allRunningProcessNames.Length > 1;
}
catch (Exception ex)
{
// Log.Write(ex);
}
return false;
}
IsAppAlreadyRunning
是 C# 代码中的一个函数,因此您不能分配给它。试试这个:
public static bool IsAppAlreadyRunning()
{
bool retVal = false;
try
{
// Current Running Process (this launched app)
string currentRunningProcessName = Process.GetCurrentProcess().ProcessName;
// Get ALL Running Processes
Process[] allRunningProcessNames = Process.GetProcessesByName(currentRunningProcessName);
if (allRunningProcessNames.Length > 1)
{
retVal = true;
}
}
catch (Exception ex)
{
// Log.Write(ex);
}
return retVal;
}
- 方法和变量不能共享名称。将其重命名为其他名称。
- 您需要声明变量,即 bool IsAppAlreadyRunningVar = false;
- 您需要确保每个代码路径中的 return 值 (bool)。如果此条件
if (allRunningProcessNames.Length > 1)
失败会怎样?
方法的名称是 IsAppAlreadyRunning。您不能将 true/false 分配给它。
我猜您想确定是否有具有指定进程名称的活动进程。
试试这个:
public abstract class OSHelper
{
public static bool IsAppAlreadyRunning()
{
try
{
// Current Running Process (this launched app)
string currentRunningProcessName = Process.GetCurrentProcess().ProcessName;
// Get ALL Running Processes
Process[] allRunningProcessNames = Process.GetProcessesByName(currentRunningProcessName);
return allRunningProcessNames.Length > 1;
}
catch (Exception ex)
{
// Log.Write(ex);
}
return false;
}
}