Исправление проблемы области с переменной типа Var - PullRequest
0 голосов
/ 09 июля 2010

В приведенном ниже коде мне нужно установить «Variable1» на произвольное значение, чтобы я не стал вдаваться в проблемы с областями видимости ниже. Какое наилучшее произвольное значение для переменной типа var или есть лучший способ избежать проблемы с областью видимости, которую я имею?

var Variable1;
if(Something == 0)
{
    //DB = DatabaseObject
    Variable1 = 
        from a in DB.Table
        select new {Data = a};
}
int RowTotal = Variable1.Count();

Ответы [ 3 ]

3 голосов
/ 09 июля 2010

Ну, вы могли бы сделать:

// It's not clear from your example what the type of Data should
// be; adjust accordingly.
var variable1 = Enumerable.Repeat(new { Data = 0 }, 0).AsQueryable();
if (something == 0)
{
    //DB = DatabaseObject
    variable1 = from a in DB.Table
                select new {Data = a};
}
int rowTotal = variable1.Count();

Это эффективно "печатать на примере". Если честно, я постараюсь избежать этого, но трудно точно знать, как я это сделаю, не видя остальную часть метода. Если возможно, я бы постарался максимально ограничить область действия анонимного типа.

Примечание: в этом случае вы можете просто выбрать a вместо анонимного типа. Я предполагаю, что ваш реальный вариант использования более сложный. Точно так же, если вам действительно нужен только итог строки, тогда установите , что внутри фигурных скобок. Приведенное выше решение применимо только в том случае, если вам действительно очень понадобится значение переменной позже.

1 голос
/ 09 июля 2010

Используете ли вы Variable1 позже в своем коде или просто для определения количества строк.

Если последнее, то просто:

int RowTotal = DB.Table.Count();

Если для полного блока:

int RowTotal = (Something == 0) ? DB.Table.Count() : 0;
0 голосов
/ 09 июля 2010

Похоже, вы можете определить его как IEnumerable.Тогда вы можете использовать функцию подсчета, как вы пытаетесь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...