public static int 行程是否存在(string i)
{
Process[] ps = Process.GetProcesses();
foreach(Process p in ps)
{
string info = "";
info = p.ProcessName;
if(i == info)
{
return 1;
}
else
{
return 0;
}
}
}
顯示并非所有的代碼路徑都有回傳值,求大神幫忙,萬分感謝
uj5u.com熱心網友回復:
public static int 行程是否存在(string i)
{
Process[] ps = Process.GetProcesses();
foreach(Process p in ps)
{
string info = "";
info = p.ProcessName;
if(i == info)
{
return 1;
}
else
{
return 0;
}
}
return 0
}
uj5u.com熱心網友回復:
方法可能出現沒有回傳值的可能,1樓正解uj5u.com熱心網友回復:
有可能不執行foreach操作,也就沒有回傳值。建議再方法體內定義一個臨時變數,if中對其賦值,最后再return出來。uj5u.com熱心網友回復:
改成這樣,不然第一個不匹配就回傳0了public static int 行程是否存在(string i)
{
Process[] ps = Process.GetProcesses();
int result = 0;
foreach (Process p in ps)
{
string info = "";
info = p.ProcessName;
if (i == info)
{
result = 1;
break;
}
}
return result;
}
uj5u.com熱心網友回復:
或者這樣:public static int 行程是否存在(string i)
{
Process[] ps = Process.GetProcesses();
if (ps.Any(p => p.ProcessName == i))
{
return 1;
}
else
{
return 0;
}
}
uj5u.com熱心網友回復:
1#正解
uj5u.com熱心網友回復:
道理很簡單,因為你可能直接Foreach都不進去。
編譯器無法判斷ps是不是有值。
所以在foreach外面,需要一個return ,來代表如果沒有進入遍歷,那么也會回傳一個值
uj5u.com熱心網友回復:
public static bool ProcessIsExisted(string processName)
{
Process[] ps = Process.GetProcesses();
foreach (Process p in ps)
{
if (p.ProcessName == processName)
{
return true;
}
}
return false;
}
重寫了一下,自己比較吧。
uj5u.com熱心網友回復:
你要保證任何情況下都有回傳值啊,ps.Length=0就不行uj5u.com熱心網友回復:
你最后再加一個return不就好了。你要考慮好是不是有沒有回傳的可能就好uj5u.com熱心網友回復:
#4、#5、#8才是正解的,其他的編譯無問題,邏輯有問題。uj5u.com熱心網友回復:
同感。
uj5u.com熱心網友回復:
你的Process.GetProcesses很有可能回傳的集合是0,所以下面的foreach就進不去,然后你的return都是再foreach里,樓上的回答都對,建議你改成Bool回傳值,提前定義一個 bool result=false,然后回傳reusltuj5u.com熱心網友回復:
public static bool 行程是否存在(string i)
{
return Process.GetProcesses().Exists(d=>d.ProcessName==i);
}
uj5u.com熱心網友回復:
如果你非要實作這個功能你必須保證你的服務器肯定能聯網,然后通過cmd執行ping或者nslookup獲取回傳的ip轉載請註明出處,本文鏈接:https://www.uj5u.com/net/119056.html
標籤:C#
