Zach West Ответов: 1

Есть ли что-нибудь похожее на PHP isset() в C#?


всем привет,

Я родом из PHP-фона и хотел бы знать, есть ли способ проверить, существует ли переменная, а если нет, то создать ее.

Что-то похожее, как видно из приведенного ниже кода PHP.
if(isset($variable)){
    echo 'variable is set';
}else{
    echo 'variable is not set';
    $variable = 'This variable is now set';
}

В настоящее время я получаю ошибку "не могу использовать локальную переменную 'pricelist' до ее объявления". Имейте в виду, что это консольное приложение C#, а не веб-приложение.

С уважением,

Что я уже пробовал:

Онлайн-исследование, но, к сожалению, ничего не смогло найти.

1 Ответов

Рейтинг:
10

Tomas Takac

В C# все переменные должны быть объявлены перед их использованием:

string variable = null; // <- declaration
if(variable != null)
{
    Console.WriteLine("variable is set");
}
else
{
    Console.WriteLine("variable is not set");
    variable = "This variable is now set";
}

Но предыдущий пример немного глуповат. Предположим, у вас есть метод и вы хотите проверить аргумент:
public void Run(string variable)
{
    if(variable != null)
    {
        Console.WriteLine("variable is set");
    }
    else
    {
        Console.WriteLine("variable is not set");
    }
}

В любом случае переменная должна существовать до того, как вы ее впервые используете. А C# заставляет вас явно инициализировать все локальные переменные. С другой стороны полям членам класса присваиваются значения по умолчанию так что это будет работать:
class Test
{
    private string variable;
    
    public void Run()
    {
        if(variable != null)
        {
            Console.WriteLine("variable is set");
        }
        else
        {
            Console.WriteLine("variable is not set");
            variable = "This variable is now set";
        }
    }
}


Zach West

Большое спасибо, что прояснил это, Томас.

С уважением,
Зак