В чем разница между Convert.ToInt32 и (int)? - PullRequest
49 голосов
/ 22 октября 2009

Следующий код выдает ошибку во время компиляции, как

Невозможно преобразовать тип 'string' в 'int'

string name = Session["name1"].ToString();
int i = (int)name;

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

string name = Session["name1"].ToString();
int i = Convert.ToInt32(name);

Хотелось бы знать:

  1. Почему первый код генерирует ошибку во время компиляции?

  2. В чем разница между двумя фрагментами кода?

Ответы [ 12 ]

0 голосов
/ 22 октября 2009

Разница в том, что первый фрагмент - это приведение, а второй - преобразование. Хотя, я думаю, что из-за формулировок ошибка компилятора приводит к еще большей путанице Возможно, было бы лучше, если бы он сказал «Невозможно привести тип« string »к« int ».

0 голосов
/ 22 октября 2009

Convert.ToInt32

    return int.Parse(value, CultureInfo.CurrentCulture);

но (int) является приведением типа, поэтому (int) «2» не будет работать, так как вы не можете привести строку к int. но вы можете разобрать это как Convert.ToInt32 do

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