2015-05-20 4 views
-3

Мне нужно написать программу, которая преобразует строку в int.String to int in C#

Я сделал это, но это не работает

string str = "VKES"; 
int a = Convert.ToInt32(str); 

, что я хочу, чтобы иметь численное значение «VKES»

+3

Что вы подразумеваете под преобразованием «VKES» в int? Что вы ожидаете? –

+1

Convert.ToInt32 анализирует строку, чтобы сделать число, которое будет представлять, если человек должен был прочитать строку. Письма не преобразуются в такие числа. Вы пытаетесь суммировать символы «значения»? –

+1

Каков результат, которого вы ожидаете? – maniak1982

ответ

0

Проще говоря: вы не можете преобразовать строку в int, если только эта строка не является числом. Должно иметь смысл, что это будет целое число для преобразования в порядке.

string str = "100"; 
int a = Convert.ToInt32(str); 

Будет работать.

+0

' Convert.ToInt32' внутренне вызывает 'int.Parse'. Я не уверен, где у вас сложилось впечатление, что это «более эффективно», но это не так. –

+0

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

+0

В следующий раз, когда кто-то скажет вам что-то подобное, обратитесь к [исходному коду] (http://referencesource.microsoft.com/#mscorlib/system/convert.cs,069d595792a157df) –

0

Вы не собираетесь обмануть компилятор. Пока значение str не является числом в диапазоне от int, оно не будет работать.

0

Это потому, что «VKES» не является допустимым целым числом. Подтвердить строку первой

int v; 
if (Int32.TryParse(str, out v)) { 
} 
0

компилятор может отличить то, что вы литья, вы можете привести тип данных строки для Int. но эта строка должна находиться в диапазоне типа данных int. просто: «должно быть int»