Как инициализировать var?

Я могу инициализировать var с пустым указателем или некоторым пустым значением?

56
задан nawfal 16 January 2014 в 10:19
поделиться

7 ответов

C # - это строго / строго типизированный язык . var был введен для связывания типов во время компиляции для анонимных типов , но вы можете использовать var для примитивных и пользовательских типов, которые уже известны во время разработки. Во время выполнения нет ничего лучше var, он заменяется фактическим типом, который является либо ссылочным типом, либо типом значения.

Когда вы говорите

var x = null; 

, компилятор не может решить эту проблему, потому что нет типа, привязанного к null. Вы можете сделать это так.

string y = null;
var x = y;

Это будет работать, потому что теперь x может знать свой тип во время компиляции, который в данном случае является строкой.

54
ответ дан 26 November 2019 в 17:06
поделиться

A var не может быть установлен на null , так как он должен быть статически типизирован.

var foo = null;
// compiler goes: "Huh, what's that type of foo?"

Однако вы можете использовать эту конструкцию, чтобы обойти проблему:

var foo = (string)null;
// compiler goes: "Ah, it's a string. Nice."

Я не знаю точно, но из того, что я слышал, вы также можете использовать dynamic вместо var . Это не требует статической типизации.

dynamic foo = null;
foo = "hi";

Кроме того, поскольку из вопроса мне было непонятно, имели ли вы в виду ключевое слово var или переменные в целом: только ссылки (на классы) и типы, допускающие значение NULL, могут иметь значение NULL. Например, вы можете сделать это:

string s = null; // reference
SomeClass c = null; // reference
int? i = null; // nullable

Но вы не можете этого сделать:

int i = null; // integers cannot contain null
7
ответ дан 26 November 2019 в 17:06
поделиться

вы не можете инициализировать var значением null, var необходимо инициализировать как тип, иначе это не может быть выведено, если вы думаете, что вам нужно это сделать, возможно, вы можете опубликовать код, это вероятно что есть другой способ сделать то, что вы пытаетесь сделать.

0
ответ дан 26 November 2019 в 17:06
поделиться

Почему это невозможно?

var theNameOfTheVar = (TheType)null;

например:

var name = (string)null;

Все просто.

30
ответ дан 26 November 2019 в 17:06
поделиться

Нет. var необходимо инициализировать типом, он не может быть нулевым.

4
ответ дан 26 November 2019 в 17:06
поделиться

var просто указывает компилятору вывести тип, который вам нужен, во время компиляции ... он не может сделать вывод из null (хотя бывают случаи, что он мог ).

Итак, вам не разрешено это делать.

Когда вы говорите «какое-то пустое значение» ... если вы имеете в виду:

var s = string.Empty;
//
var s = "";

Тогда да, вы можете это сделать, но не null .

3
ответ дан 26 November 2019 в 17:06
поделиться

вы не можете присвоить null типу var.

Если вы присвоите значение null, компилятор не сможет найти нужную переменную в месте var.

выдает ошибку: Невозможно присвоить неявно типизированной локальной переменной

вы можете попробовать следующее:

var dummy =(string)null;

Здесь компилятор может найти нужный вам тип, поэтому нет проблем

Вы можете назначить некоторые пустые значения.

var dummy = string.Empty;

или

var dummy = 0;
2
ответ дан 26 November 2019 в 17:06
поделиться
Другие вопросы по тегам:

Похожие вопросы: