Является ли этот метод расширения для принудительного ввода строки в целое число или по умолчанию 0 избыточным? - PullRequest
5 голосов
/ 30 августа 2010

Мне понадобился однострочный символ для преобразования строки в целое число, и если строка является чем-то недопустимым, просто установите ее на ноль. Поэтому я сделал следующий метод расширения, но я могу представить, что есть системный метод, который делает это в одной строке.

Есть ли другой способ сделать это в одной строке без создания метода расширения?

using System;

namespace TestForceInteger
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("testing".ForceInteger() + 1);
            Console.WriteLine("199".ForceInteger() + 1);
            int test = StringHelpers.ForceInteger(null);
            Console.WriteLine(test + 1);
            Console.ReadLine();
            //output:
            //1
            //200
            //1
        }
    }

    public static class StringHelpers
    {
        public static int ForceInteger(this string potentialInteger)
        {
            int result;
            if (int.TryParse(potentialInteger, out result))
                return result;
            else
                return 0;
        }
    }
}

Ответы [ 4 ]

3 голосов
/ 30 августа 2010

Не как однострочный, афаик, но если вы хотите избежать метода расширения, вы можете инициализировать результат равным 0 и игнорировать результат TryParse:

int result = 0;
int.TryParse(potentialInteger, out result)
2 голосов
/ 30 августа 2010

Не совсем обычным способом с библиотеками фреймворка, нет.

Ваш метод расширения был бы лучше, если бы он возвращал обнуляемое целое число, чтобы вы могли различать «недопустимый» и 0.

0 голосов
/ 30 августа 2010

Используйте

int result;
result = Int32.TryParse(potentialInteger, out result) ? result : 0; // or default(int)
От

до убедитесь, что для установлено значение 0. Но это абсолютно не нужно (см. Комментарий @ Энтони к ответу @ Паоло)

0 голосов
/ 30 августа 2010

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

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