Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > .NET для новичков > Name ... does not exist in the current context


Автор: videns 10.3.2010, 16:13
Есть следующий код:

Код


if ( var1 == "some name")
{
   var var2 = "1111";
}
else
{
   var var2 = "2222";
}

<далее какие-то действия с var2>



И в конце вот ругается на то, что переменная var2 не задана в текущем контексте. Хотя она явно задается в первом или втором случае. Можно как-то от этого избавиться? 

Есть вариант задавать вначале переменную, и потом уже ее изменять. Но если я не задаю явно тип переменной, а использую обозначение через var, то такой вариант не работает, т.к. ее надо явно инициализировать.

Автор: CYBERDREAM 10.3.2010, 16:28
ты хочешь вызывать из более высокого уровня.

Код

string var2;
if ( var1 == "some name")
{
   var2 = "1111";
}
else
{
    var2 = "2222";
}

<далее какие-то действия с var2>

Автор: Экскалупатор 10.3.2010, 21:31
videns, а почему нельзя объявить переменную нормально? а не VAR?

Автор: Kanes 11.3.2010, 00:40
А это побочное влияние синтаксического сахара в С#

Автор: KelTron 11.3.2010, 07:51
Если уж так приспичило, можно сделать так:
Код

var var2 = "";
if ( var1 == "some name")
{
   var2 = "1111";
}
else
{
    var2 = "2222";
}

или так:
Код

var var2 = "2222";
if ( var1 == "some name")
{
   var2 = "1111";
}

Но это не тот случай, когда целесообразно использовать var

Автор: Экскалупатор 11.3.2010, 08:39
У автора две проблемы.
1. отсутствие понимания про видимость переменных.
2. явные проблемы с var(или явное не знание остальных типов). если понятно, что это строка, то надо написать сразу, что это строка. если все время писать var, то потом код читать вообще становиться не реально. везде одни эти var`ы и пока в них разберешься... то проще переписать все заново... 

в связи с этим можно посоветовать почитать первые пару глав любого учебника/справочника по C#.

Добавлено через 1 минуту и 21 секунду
з.ы. готов поспорить что var1 тоже объявлен ка var.

Автор: mrbrooks 11.3.2010, 08:46
Более того сравнивать строки через оператор == не кошерно.

Автор: videns 11.3.2010, 09:11
Объявление var2 как строку привел только для примера. В действительности использую для Linq to SQL.

Код

Table1DataContext db = new Table1DataContext();
var var2 = from p in db.Table1
                     select p;


Решил действительно объявить переменную вначале:

IEnumerable<Table1> var2;

И после этого уже ее менять. Спасибо за помощь!

Автор: mrbrooks 11.3.2010, 09:13
Цитата(videns @  11.3.2010,  09:11 Найти цитируемый пост)
В действительности использую для Linq to SQL.

это камрад надо было в самом начале писать. Выглядело все не так очевидно. smile

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)