我有下面的代碼:通用類,通過結構約束,產生編譯時錯誤「使用未分配的局部變量的」
class GenericStruct<T> where T : struct
{
public void M()
{
T temp1;
T temp2;
string s = temp1.ToString();
Type t = temp1.GetType();
bool b = temp1.Equals(temp2);
}
}
我有兩個錯誤,當調用方法「未分配的局部變量的使用」:的ToString和等於,但GetType沒問題。在編譯時
struct NotGenericStruct
{
public void M()
{
NotGenericStruct temp1;
NotGenericStruct temp2;
string s = temp1.ToString();
Type t = temp1.GetType();
bool b = temp1.Equals(temp2);
}
}
正常,沒有錯誤: 汀,說:「打擾」我是事實上,
where T : struct
存在但是,如果我寫的。 據我所知,該結構數據類型具有默認的構造函數,並且所有成員都已初始化,因此不需要寫入新的顯式。
兩個代碼之間究竟有什麼區別?請給我解釋一下我的不解
感謝
使用默認(T)初始化您的變量 –
@Groo我不知道它是一個重複的id。如果我理解正確的話,問題是「什麼是差異_」而不是「_如何修復」。 – AlexD
我同意這不應該真的被關閉。問題是關於爲什麼編譯器允許在第二個示例中使用未分配的局部變量,而當它是一個顯式結構時,而不是在第一個示例中它是隱式結構時。 – Chris