Я могу инициализировать var с пустым указателем или некоторым пустым значением?
C # - это строго / строго типизированный язык . var был введен для связывания типов во время компиляции для анонимных типов , но вы можете использовать var для примитивных и пользовательских типов, которые уже известны во время разработки. Во время выполнения нет ничего лучше var, он заменяется фактическим типом, который является либо ссылочным типом, либо типом значения.
Когда вы говорите
var x = null;
, компилятор не может решить эту проблему, потому что нет типа, привязанного к null. Вы можете сделать это так.
string y = null;
var x = y;
Это будет работать, потому что теперь x может знать свой тип во время компиляции, который в данном случае является строкой.
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
вы не можете инициализировать var значением null, var необходимо инициализировать как тип, иначе это не может быть выведено, если вы думаете, что вам нужно это сделать, возможно, вы можете опубликовать код, это вероятно что есть другой способ сделать то, что вы пытаетесь сделать.
Почему это невозможно?
var theNameOfTheVar = (TheType)null;
например:
var name = (string)null;
Все просто.
Нет. var
необходимо инициализировать типом, он не может быть нулевым.
var
просто указывает компилятору вывести тип, который вам нужен, во время компиляции ... он не может сделать вывод из null
(хотя бывают случаи, что он мог ).
Итак, вам не разрешено это делать.
Когда вы говорите «какое-то пустое значение» ... если вы имеете в виду:
var s = string.Empty;
//
var s = "";
Тогда да, вы можете это сделать, но не null
.
вы не можете присвоить null типу var.
Если вы присвоите значение null, компилятор не сможет найти нужную переменную в месте var.
выдает ошибку: Невозможно присвоить
вы можете попробовать следующее:
var dummy =(string)null;
Здесь компилятор может найти нужный вам тип, поэтому нет проблем
Вы можете назначить некоторые пустые значения.
var dummy = string.Empty;
или
var dummy = 0;