Создание класса утилит? - PullRequest
20 голосов
/ 18 мая 2010

Я очень плохо знаком с ООП и изо всех сил стараюсь держать вещи строго на основе классов, используя при этом хорошие принципы кодирования.

Сейчас я честно вхожу в свой проект, и у меня есть много методов общего назначения, которые я хочу включить в класс утилит. Есть ли лучший способ создать класс утилит?

public class Utilities
{
    int test;

    public Utilities()
    {
    }

    public int sum(int number1, int number2)
    {
        test = number1 + number2;
    }
    return test;
}

После создания этого класса Utilities, я должен просто создать объект Utilities и запустить методы по своему выбору? Правильно ли я понимаю эту идею класса Utilities?

Ответы [ 8 ]

37 голосов
/ 18 мая 2010

Вы должны сделать его классом static, например:

public static class Utilities {
    public static int Sum(int number1, int number2) {
        return number1 + number2;
    }
}

int three = Utilities.Sum(1, 2);

Класс не должен (обычно) не иметь никаких полей или свойств. (Если вы не хотите совместно использовать один экземпляр какого-либо объекта в своем коде, в этом случае вы можете создать свойство static только для чтения.

12 голосов
/ 18 мая 2010

Если вы работаете с .NET 3.0 или выше, вы должны изучить методы расширения. Они позволяют вам написать функцию static, которая будет действовать против определенного типа, например Int32, и в то же время выглядеть как метод для этого объекта. Итак, вы могли бы иметь: int result = 1.Add(2);.

Попробуйте это; это может просто показать вам другой путь. ;)

Учебник по C # - Методы расширения

2 голосов
/ 18 мая 2010

Вам будет лучше использовать класс static с static методами. Тогда вам не нужно будет создавать экземпляр своего класса утилит, чтобы использовать его. Это будет выглядеть примерно так:

public static Utilites
{
  public static int sum(int number1, int number2)
  {
     test = number1+number2;
     return test;
  }
}

Тогда вы можете использовать это так:

int result = Utilites.sum(1, 3);
1 голос
/ 24 апреля 2019
  1. Создать класс Utility как открытый статический класс.
  2. Определенный служебный метод-метод со статическим ключевым словом

Вызов метода: -

int result = Utilities.sum (1, 2);

   public static class MyMath
         {
             int result;

             public static int sum(int number1, int number2)
             {
                 result= number1+number2;
                 return result;
             }
        }
1 голос
/ 18 мая 2010

Будучи новичком в ООП и пытаясь справиться с лучшими практиками, может быть хорошей идеей является попытка избежать служебных классов. Вы можете перепроектировать свой класс как

public class Sum
{
    private int _result;

    public int Result {
       get {
           return _result;
       }
    }

    public Sum(int startNum) {
        _results = startNum;
    }

    public void Add(int num) {
        _result += num;
    }
}

И называется как:

Sum sum = new Sum(1);
sum.add(2);
int result = sum.Result;

Это будет хорошей практикой, пока дальнейший опыт работы с ООП не поможет вам изучить компромисс между использованием класса утилит и принципов чистого ООП.

1 голос
/ 18 мая 2010

Лучше всего сделать функции не надежными для членов класса. Поэтому вы можете сделать функции статичными.

Лучше сделать функции методом расширения типа. см. Здесь, например,

0 голосов
/ 21 октября 2016

да, это не компилируется, потому что int-тест, который не поддерживается внутри статического класса, либо делает его статическим int-тестом, который будет поддерживаться, и возвращает вывод

0 голосов
/ 18 мая 2010

сделай это.

public static class Utilities
{
    int test;

    public static int sum(int number1, int number2)
    {
        test = number1+number2;
        return test;
    }
}

Таким образом, вы используете его как

int result = Utilities.sum(1, 2);
...