我在我的數據庫中有兩個不同的表,每個表都根據他們的「SortOrder」顯示給用戶。我寫了兩個函數,它們接受一行(或實體),並將它的排序順序與最接近它的排序順序(上或下,取決於正在執行的函數)進行交換。我需要使這些函數適用於兩個不同的表,這取決於事件發生的位置(具有相同功能的多個GridView)。這裏是我到目前爲止(再次,對於移動下一個幾乎相同的功能,但我不會發表,因爲這將是多餘的):C# - 初始化一個變量而不知道它將會怎樣
protected void moveUp(String ValId, String dbName)
{
int ValueId = Convert.ToInt32(ValId);
DataModel.DataAccess.Entities dc = new DataModel.DataAccess.Entities();
if (dbName.ToLower() == "table1")
{
DataModel.DataAccess.Table1 currentValue = dc.Table1.Single(table1item => table1item.Table1ItemId == ValueId);
}
else if (dbName.ToLower() == "table2")
{
DataModel.DataAccess.Table2 currentValue = dc.Table2.Single(table2item => table2item.Table2ItemId == ValueId);
}
try
{
//make the change and update the database and gridview
}
catch (InvalidOperationException)
{
}
}
明顯的問題是,我需要在if語句之前啓動currentValue變量,否則存在它從未被聲明的「可能性」,因此該函數的其餘部分(使用currentValue變量)將不起作用。
我的問題是這樣的:我應該如何初始化變量之前 if語句,如果我不確定它會怎麼樣呢?我認爲這可能會奏效,但它說我還需要對它進行初始化(「隱式類型的局部變量必須初始化」):
var currentValue; //this is the line where I get the error message above
if (dbName.ToLower() == "table1")
{
currentValue = (DataModel.DataAccess.Table1)dc.Table1.Single(table1item => table1item.Table1ItemId == ValueId);
}
else if (dbName.ToLower() == "table2")
{
currentValue = (DataModel.DataAccess.Table2)dc.Table2.Single(table2item => table2item.Table2ItemId == ValueId);
}
[編輯]改變了標題,使之更準確地反映我的問題
我沒有製作數據模型。我只是將功能添加到已經建好的項目中。我對.net仍然很陌生,所以我的知識水平有限 –
您的currentValue _Type_有問題,而不是值。只需重構你的代碼。 –