2009年6月5日 星期五

被 C# 搞死了 編譯器錯誤 CS0165

http://msdn.microsoft.com/zh-tw/library/4y7h161d.aspx
C# 編譯器不允許使用未初始化的變數。

我猜想這個是為了讓寫程式的人永遠記得,變數一定要初始化。
這原意很好。
但是有時候,會依據條件,使用不同的 constructor。以下的寫法就會出問題。
=============
TcpClient tcp;
if (ip ==""){
  tcp = new TcpClient();
}
else{
  tcp = new TcpClient(ip, port);
}
Console.WriteLine(tcp.connected);
=============
因為放進條件式,編譯器就以為沒有初始化了,於是就發生這樣子的問題。這樣真的太小氣了。我真的不能這樣寫嗎?
我也不曉得該怎麼辦,只好用個最笨的方法,一開始設成 null,讓編譯器不出問題。
TcpClient tcp = null;
既然如此,何不一開始,編譯器永遠都是開頭設成 null 就好了?
為什麼不的原因我實在想不出來。

沒有留言:

張貼留言