Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> String в int 
:(
    Опции темы
kurzon
Дата 3.11.2007, 01:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 307
Регистрация: 12.8.2007

Репутация: 0
Всего: -11



Как переменую типа String конвертировать в тип int?

Это сообщение отредактировал(а) kurzon - 3.11.2007, 01:29
PM MAIL   Вверх
marcusmae
Дата 3.11.2007, 01:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


stravaganza
**


Профиль
Группа: Участник
Сообщений: 874
Регистрация: 26.3.2006

Репутация: 5
Всего: 39



так

Код

string str = "1234";
int value = Convert.ToInt32(str);  //-- 1234


или так

Код

string str = "1234";
int value;
bool success = Int32.TryParse(str, out value);


Различие в том, что подопечные класса Convert возвращают результат и в случае ошибок вываливают исключение, а .TryParse-ы сообщают о степени успешности в логический результат и значение передают через аргумент на выход.


--------------------
ἀπὸ μηχανῆς θεός
PM MAIL ICQ GTalk   Вверх
Xenon
Дата 3.11.2007, 02:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1529
Регистрация: 12.4.2006

Репутация: 3
Всего: 50



marcusmae, а операции типа int.Parse(...) чем от этих двух отличаются?


--------------------
user posted image  
PM MAIL   Вверх
marcusmae
Дата 3.11.2007, 12:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


stravaganza
**


Профиль
Группа: Участник
Сообщений: 874
Регистрация: 26.3.2006

Репутация: 5
Всего: 39



Цитата(Xenon @  3.11.2007,  02:21 Найти цитируемый пост)
 а операции типа int.Parse(...) чем от этих двух отличаются?

Ага, забыл про неё.


--------------------
ἀπὸ μηχανῆς θεός
PM MAIL ICQ GTalk   Вверх
Xenon
Дата 3.11.2007, 14:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1529
Регистрация: 12.4.2006

Репутация: 3
Всего: 50



marcusmae, нет, я задал вопрос, а не решил подстебнуть. Мне интересно чем эта фигня - то от тех отличается или алгоритм один и тот же? smile


--------------------
user posted image  
PM MAIL   Вверх
marcusmae
Дата 3.11.2007, 15:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


stravaganza
**


Профиль
Группа: Участник
Сообщений: 874
Регистрация: 26.3.2006

Репутация: 5
Всего: 39



Ааа

Ну чем .Parse отличается от .TryParse - это как, допустим в System.Collections.Genetic.Dictionary<T>, есть индексер по ключам, возвращающий значения и есть .TryGetValue, возвращающий bool, а значение - через out-аргумент. Ээ, тут не вижу что объяснять, просто разные подходы.

А вот Convert.ToInt32 отличается от Int32.Parse тем, как обрабатывается null. Convert.ToInt32 возвращает ноль, а  Int32.Parse вывалит исключение. Вы правы, на это стоит обратить внимание. По этому поводу в статье MSDN :

Цитата

I believe that Convert.ToInt32(string) just checks for a null string (if the string is null it returns zero unlike the Parse) then just calls Int32.Parse(string). 


и проводится некоторое сравнение.

Это сообщение отредактировал(а) marcusmae - 3.11.2007, 15:40


--------------------
ἀπὸ μηχανῆς θεός
PM MAIL ICQ GTalk   Вверх
tol05
Дата 3.11.2007, 16:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1632
Регистрация: 21.12.2006
Где: Харьков

Репутация: 36
Всего: 170



Int32.Parse - если приведение строки к int невозможно - выбрасывается исключение. Опасно использовать без try-catch. 

Int32.TryParse  - если приведение строки к int невозможно - просто возвращает false, исключение не выбрасывается. Само название говорит этой функции "попробую привести, после выполнения скажу "да" или "нет"
smile

Convert.ToInt32 - тоже выбрасывает исключение при неудаче. 

Ну а зачем Convert.ToInt32, если есть Int32.Parse ? Да просто клас Convert разработан для любых приведений между базовыми типами .Net, не только string в int , но и "любой базовый тип в любой базовый тип". Посчитали - сколько возможно комбинаций преобразования среди базовых типов, да и написали все методы преобразования. А Convert - это враппер для всех этих методов.
Вот Convert.ToInt32 из рефлектора 
Код

public static int ToInt32(string value)
{
    if (value == null)
    {
        return 0;
    }
    return int.Parse(value, CultureInfo.CurrentCulture);
}

 




--------------------
На хорошей работе и сны хорошие снятся.
PM MAIL   Вверх
Xenon
Дата 3.11.2007, 16:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1529
Регистрация: 12.4.2006

Репутация: 3
Всего: 50



Насчет исключений был в курсе, а того, что Convert, по сути, оболочка лишь - нет. Спасибо smile


--------------------
user posted image  
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
Partizan
PashaPash

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, Partizan, PashaPash.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | .NET для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0522 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.