2013-08-31 3 views
-1

У меня есть некоторые путаницы в отношении инициализации var, а не var., используя ключевое слово var, а не var в C#

var x=10; 

x=12; 

В чем разница между инициализацией на C#?

Я знал, что ключевое слово var используется для следующих способов.

Если тип сложный для записи, например запрос LINQ (причина для var в первую очередь), используйте var.

Спасибо,

Siva

+0

В соответствующем столбце справа имеется дюжина или более дубликатов. –

+0

Периферийное примечание - 'var' не было добавлено просто для удобства не выписывать тип объявления. Основная причина, по которой она была добавлена, заключалась в том, что без нее невозможно было возвращать анонимные типы. Все остальные причины были дополнительными, которые пришли вместе с ним. – Gjeltema

ответ

1

Это один компилирует.

var x=10; 

Это не предполагает, что вы пытаетесь инициализировать x в этом сценарии.

x=12; 

Он должен быть:

int x = 12; 

Теперь в чем разница между var x=12; и int x = 12; ничего. Они оба решаются во время компиляции.

1

Первый используется для объявления и назначить локальную переменную x. Объявленная новая переменная автоматически получит (сильный и нединамический) тип правой части =. Это тип int в вашем примере.

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

0
var x = 10; 

является equavalent к

int x = 10; 

var отлично синтаксический сахар.

Когда вы пишете x = 10, ваш x должен быть объявлен ранее.

0

вар

Он был введен в C# 3.0

1) var declarations are resolved at compile-time. 
2) Errors are caught at compile time. 

Когда вы не знаете, какой тип вы управляетесь с этим лучше идти с var он получает его тип с правой стороны задания, где оно определено.

var x =10; 

    x=12; 

В первом случае компилятор разрешило заявление во время выполнения

Давайте предположим, если бы вы сделали

var x=10; 

    x="I am String"; 

выбросит ошибку, так как компилятор уже решил, что тип x - это System.Int32, когда ему присвоено значение 10. Теперь назначая значение строки это нарушает безопасности типа

Преимущества

var очень удобно, когда вы объединить его с C# 3 анонимных типов и дженерик анонимных типов еще CLR типы, но вы не можете иметь имя типа на время

Однако лучше использовать соглашения об именах для лучшей читаемости кодирования

+0

это правильно? var x = 10; x = "I'm String"; Я не могу изменить int в строку. так как var является динамическим типом? – SivaRajini

+0

@SivaRajini В момент компиляции, когда компилятор встречает 'var x = 10', он присваивает ему тип данных' Int', в результате чего datataypwe изменилось ..... Теперь в дальнейшем любое значение, которое 'x' содержит, должно быть только и только 'Int' – Rohit

1

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

var myNumber = 1; будет работать, поскольку var будет скомпилирован в int как тип. myNumber = 1 не будет работать, поскольку myNumber не объявлен. Если вы хотите объявить переменную с ничем в правой части знака равенства, вы должны явно указать тип, т. Е. int myNumber.

Лично я использовал бы только var, когда очевидно, что он скомпилирует для ... например.

var myNumber = 1; 
var name = "some name"; 
var lst = List<int>(); 

менее очевидны ...

var data = GetData(); 

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

+0

Что менее читаемо, вызывается переменная« x ». – siride

+0

@christiandev - это неправильно, когда вы говорите, что на правой стороне должно быть значение. Это может быть и другая переменная - все, что компилятор может найти в правильном типе. – csg

+2

@csg Что должно быть, это выражение, которое обладает типом. Тип этого выражения будет использоваться вместо «var». –

0

var aliases любой тип в C# и его тип будет определяться компилятором C# или он неявно напечатан.

Но в

x = 12; 

вы должны в явной форме определить тип и, например, пишут:

int x= 12; 

Использование вар не имеет никакого внимания производительности, и вы можете использовать его свободно.

Смежные вопросы