3 回答

TA貢獻1845條經驗 獲得超8個贊
某處你有:
string path;
做了
string path = null;
它可以解決您的問題。
盡管已分配null,但該路徑并未在標簽處未分配。
但是,既然我想到了,也許你的意思是:
string path = @"C:\incidents\jobTransfer";
這樣,它從一開始就被分配并具有有效值。
看到這個小提琴:
例子
string path;
goto End;
AnotherLabel:
path = @"C:\incidents\jobTransfer";
Console.WriteLine(path);
End:;
// issue at path in this line
Console.WriteLine(path);
使固定
string path = null;
goto End;
AnotherLabel:
path = @"C:\incidents\jobTransfer";
Console.WriteLine(path);
End:;
// no issue at path in this line
Console.WriteLine(path);
建議
string path = @"C:\incidents\jobTransfer";
goto End;
AnotherLabel:
Console.WriteLine(path);
End:;
// no issue at path in this line
Console.WriteLine(path);
建議
// don't use labels, due to these kinds of obscurities ;-)

TA貢獻1780條經驗 獲得超4個贊
問題很可能是您的標簽 - 這允許跳轉到您的“結束”標簽的代碼路徑,該標簽允許不設置“路徑”。
2個簡單的解決方案:
重新分配 "path = @"C:\incidents\jobTransfer";" 在“結束”標簽之后 - 您提到的是有問題的,因為如果更改,您將有兩個地方可以編輯代碼。(不過,如果您在某種配置文件中對其進行參數化,則可以更改一次)。
將標簽放在“path”的原始分配上方并使用一些條件來跳過你的“File.WriteAllLines(path + event + "\result_" + event + ".txt", resultText.ToArray());” 如果它不想要。
更好的解決方案是根本不使用標簽 - 這些通常是不受歡迎的,而您的問題是眾多原因之一;盡管如此,在每個人都因為使用 goto 而跳下喉嚨之前,有一些可以說是可以接受的使用它的理由。

TA貢獻1872條經驗 獲得超4個贊
由于您使用的是 Label - 這在 C# 中不常見,此標簽上方的范圍本質上是一個范圍,然后是另一個范圍 - 因此聲明的變量不再在范圍內,因此這就是不再分配它的原因,您需要在標簽的使用之外聲明這個變量 - 或者根本不使用標簽,因為這在 C# 中不是通常的做法
- 3 回答
- 0 關注
- 203 瀏覽
添加回答
舉報