У меня есть две разные таблицы в моей базе данных, и каждая отображается пользователю на основе их "SortOrder". Я написал две функции, которые берут строку (или сущность) и меняют ее порядок сортировки на ближайшую к нему (вверх или вниз, в зависимости от того, какая функция выполняется). Мне нужно, чтобы эти функции работали для двух разных таблиц, в зависимости от того, где происходит событие (несколько видов сетки с одинаковой функциональностью). Вот что у меня есть (опять же, есть почти идентичная функция для перемещения вниз , но я не буду это публиковать, потому что это будет избыточно):
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)
{
}
}
Очевидная проблема заключается в том, что мне нужно инициировать переменную currentValue перед операторами if, в противном случае существует "вероятность" того, что она никогда не будет объявлена, и поэтому функция (которая использует переменную 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);
}
[РЕДАКТИРОВАТЬ] Изменено название, чтобы оно более точно отражало мой вопрос