Является ли «var» в C # аналогичным «size_t» в C? - PullRequest
2 голосов
/ 01 февраля 2010

Я привык использовать size_t в своем коде C ++ с помощью C по настоянию профессора, и мне было любопытно, является ли 'var' в C # тем же самым видом?

Ответы [ 6 ]

15 голосов
/ 01 февраля 2010

Они не имеют ничего общего друг с другом!

var используется для автоматического вывода типа (компилятор определяет тип переменной на основе типа возвращаемого значения инициализатора (как auto в C ++ 1x)).

size_t - это просто целое число без знака в C.

6 голосов
/ 01 февраля 2010

Между ними огромная разница.

size_t используется для представления размера объекта, возвращаемого sizeof. Это не общий способ объявления переменных.

var - это неявный способ объявления переменных.

3 голосов
/ 01 февраля 2010

Если вы спрашиваете, похоже ли использование var на size_t в том смысле, что вам на самом деле не нужно использовать size_t, вы можете сойти с int, тогда да, они вроде аналогично в этом отношении.

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

Таким образом, читаемость следующего кода может быть улучшена с помощью var:

Dictionary<string, Dictionary<int, char>> mapping = new Dictionary<string, Dictionary<int, char>>();

- против -

var mapping = new Dictionary<string, Dictionary<int, char>>();

Однако чрезмерное использование var может повредить читабельности, как в var f = Foo();.

В отличие от size_t, нет абсолютно никакой разницы в коде, который компилируется с var, в отличие от явного типа.

С size_t одним из преимуществ является мобильность. Размеры объектов могут быть не int на всех платформах, но size_t всегда будет достаточно большим, чтобы их вместить. Это означает, что не использование size_t может означать, что ваш код не компилируется правильно на некоторой платформе.

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

Так что, хотя рекомендуется всегда использовать size_t, где это возможно в C, var является скорее суждением. Это то, что, по вашему мнению, делает код более читабельным.

2 голосов
/ 01 февраля 2010
Ключевое слово

C # var наиболее аналогично ключевому слову C ++ 0x 'auto', которое связано с выводом типа , где тип хранения выводится из выражения, а не зависит от платформы. указать размер объекта.

Нет прямого эквивалента для этого в C.

0 голосов
/ 01 февраля 2010

Нет, var и size_t не одинаковы.

Они выполняют аналогичную функцию: оба они объявляют тип локальной переменной как часть оператора.Но на этом их сходство заканчивается.

Переменная, которую объявляют var и size_t, имеет определенный тип: size_t имеет тип size_t, который обычно typedef обозначается как unsigned int.var объявляет, что тип должен быть выведен компилятором из остальной части оператора;это может быть int, может быть string, может быть List<MyClass> ... компилятор выясняет это, анализируя оставшуюся часть утверждения.

0 голосов
/ 01 февраля 2010

Это не так. Я не знаю, что такое c ++ size_t, но я знаю, что var в C # - это то же самое, что и объявить переменную в явном виде, и тут нет ничего общего с временем выполнения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...