int.Parse

Программирование на Юнити.

int.Parse

Сообщение gnoblin 07 апр 2010, 01:49

Правильно делать похоже вот так:

Код: Выделить всё
int num = int.Parse(a, CultureInfo.InvariantCulture.NumberFormat);


а не просто

Код: Выделить всё
int num = int.Parse(a);
skypeid: madkust
Мои крайние проекты:
Убойный Хоккей
Cube Day Z (альфа)
Аватара пользователя
gnoblin
Адепт
 
Сообщения: 4633
Зарегистрирован: 08 окт 2008, 17:23
Откуда: Минск, Беларусь
Skype: madkust
  • Сайт

Re: int.Parse

Сообщение Neodrop 07 апр 2010, 07:17

И в чём тут разница? :-?
Добавить neodrop в Skype
Изображение
"Спасибо!" нашему порталу, вы сможете сказать ЗДЕСЬ.
Если проблема не решается честно, нужно её обмануть! || Per stupiditas at Astra!
Страх порождает слабость. Бесстрашных поражают пули.
Протратившись на блядях байтах, на битах не экономят.
Аватара пользователя
Neodrop
Админ
 
Сообщения: 8480
Зарегистрирован: 08 окт 2008, 15:42
Откуда: Питер
Skype: neodrop
  • Сайт

Re: int.Parse

Сообщение Zaicheg 07 апр 2010, 07:52

Я так понимаю, что это позволяет брать строковой параметр со всякими левыми разделителями и специфическими региональными элементами форматирования.
Дьяченко Роман
e-mail: _zaicheg.reg@gmail.com
skype: zaicheg12
vkontakte: _vk.com/zaichegq
Работа: _wie3.com _www.sanviz.com
Аватара пользователя
Zaicheg
Адепт
 
Сообщения: 3024
Зарегистрирован: 19 июн 2009, 15:12
Откуда: Череповец

Re: int.Parse

Сообщение Neodrop 07 апр 2010, 07:54

И какова разница в скорости? Или стабильности? Я не замечал проблем с прямым парсингом int
Добавить neodrop в Skype
Изображение
"Спасибо!" нашему порталу, вы сможете сказать ЗДЕСЬ.
Если проблема не решается честно, нужно её обмануть! || Per stupiditas at Astra!
Страх порождает слабость. Бесстрашных поражают пули.
Протратившись на блядях байтах, на битах не экономят.
Аватара пользователя
Neodrop
Админ
 
Сообщения: 8480
Зарегистрирован: 08 окт 2008, 15:42
Откуда: Питер
Skype: neodrop
  • Сайт

Re: int.Parse

Сообщение Makhotkin 07 апр 2010, 23:34

Neodrop писал(а):И какова разница в скорости? Или стабильности? Я не замечал проблем с прямым парсингом int


Есть такой момент, что Parse может кинуть Exception, и где там у вас стоит catch - хороший вопрос, и вообще исключения - дорогая операция. Поэтому int.TryParse - лучший выбор, когда часто имеешь дело с некорректным вводом.
Аватара пользователя
Makhotkin
UNец
 
Сообщения: 4
Зарегистрирован: 11 сен 2009, 23:51

Re: int.Parse

Сообщение Neodrop 07 апр 2010, 23:50

Да в принципе, о проверке на валидность речь то не шла. Тут прямое указание культуры. И я вот не пойму - на кой. :-?
Добавить neodrop в Skype
Изображение
"Спасибо!" нашему порталу, вы сможете сказать ЗДЕСЬ.
Если проблема не решается честно, нужно её обмануть! || Per stupiditas at Astra!
Страх порождает слабость. Бесстрашных поражают пули.
Протратившись на блядях байтах, на битах не экономят.
Аватара пользователя
Neodrop
Админ
 
Сообщения: 8480
Зарегистрирован: 08 окт 2008, 15:42
Откуда: Питер
Skype: neodrop
  • Сайт

Re: int.Parse

Сообщение Aen Sidhe 09 апр 2010, 10:22

В разных культурах числа пишутся по разному. Чтобы не иметь проблем с парсингом - можно указывать явно.
Aen Sidhe
UNец
 
Сообщения: 5
Зарегистрирован: 24 мар 2010, 09:13

Re: int.Parse

Сообщение Neodrop 09 апр 2010, 11:36

Это в каких таких культурах INT пишется "по другому" ?
Смеётесь? :-?
Добавить neodrop в Skype
Изображение
"Спасибо!" нашему порталу, вы сможете сказать ЗДЕСЬ.
Если проблема не решается честно, нужно её обмануть! || Per stupiditas at Astra!
Страх порождает слабость. Бесстрашных поражают пули.
Протратившись на блядях байтах, на битах не экономят.
Аватара пользователя
Neodrop
Админ
 
Сообщения: 8480
Зарегистрирован: 08 окт 2008, 15:42
Откуда: Питер
Skype: neodrop
  • Сайт

Re: int.Parse

Сообщение Aen Sidhe 09 апр 2010, 11:46

Например, в определённых программистом.

IV - это тоже INT. 4, если арабскими записывать.

Ну, и пример из реальной жизни. Отрицательные числа не везде записываются одинаково.

Код: Выделить всё
using System;
using System.Globalization;
using System.Linq;

namespace CultureTest
{
   class Program
   {
      static void Main()
      {
         foreach (var item in CultureInfo.GetCultures(CultureTypes.AllCultures)
            .Where(x => !x.IsNeutralCulture)
            .GroupBy(x => x.NumberFormat.NumberNegativePattern))
         {
            Console.WriteLine("{0}, {1}, {2}", item.Key, item.Count(), item.FirstOrDefault());
         }
         Console.ReadKey();
      }
   }
}


Запустите это консольное приложение и удивитесь, сколько разных вариант есть. Необходим .Net Framework 3.5 или аналог.
Aen Sidhe
UNец
 
Сообщения: 5
Зарегистрирован: 24 мар 2010, 09:13


Вернуться в Скрипты

Кто сейчас на конференции

Сейчас этот форум просматривают: Yandex [Bot] и гости: 6