Создание класса Утилиты?
Я очень новичок в ООП, и я стараюсь, чтобы все было строго на основе классов, при использовании хороших принципов кодирования.
Я сейчас являюсь прекрасным способом в своем проекте, и у меня есть много общих методов использования, которые я хочу поместить в класс утилит. Есть ли лучший способ создать класс утилит?
public class Utilities
{
int test;
public Utilities()
{
}
public int sum(int number1, int number2)
{
test = number1 + number2;
}
return test;
}
Создав этот класс Утилиты, я просто создаю объект Utilities и запускаю методы по своему выбору? У меня есть эта идея класса Utilities правильно?
Ответы
Ответ 1
Вы должны сделать класс static
следующим образом:
public static class Utilities {
public static int Sum(int number1, int number2) {
return number1 + number2;
}
}
int three = Utilities.Sum(1, 2);
Класс должен (обычно) не иметь никаких полей или свойств. (Если вы не хотите делиться одним экземпляром какого-либо объекта по вашему коду, в этом случае вы можете сделать свойство static
только для чтения.
Ответ 2
Если вы работаете с .NET 3.0 или выше, вы должны изучить методы расширения. Они позволяют вам написать static
функцию, которая будет действовать против определенного типа, такого как Int32
, и в то же время выглядит как метод для этого объекта. Тогда вы можете получить: int result = 1.Add(2);
,
Попробуйте это; это может просто показать вам другой путь. ;)
С# Tutorial - Методы расширения
Ответ 3
Вам будет лучше использовать класс static
с методами static
. Тогда вам не нужно создавать экземпляр класса утилиты, чтобы использовать его. Он будет выглядеть примерно так:
public static Utilites
{
public static int sum(int number1, int number2)
{
test = number1+number2;
return test;
}
}
Затем вы можете использовать его следующим образом:
int result = Utilites.sum(1, 3);
Ответ 4
Лучше всего сделать функции ненадежными для членов класса. Поэтому вы можете сделать статические функции.
Лучше сделать функции методом расширения типа. см. здесь
Ответ 5
В то время как новый для ООП и попытка получить представление о лучших практиках, может быть хорошей идеей попытаться избежать классов полезности. Вы можете переделать свой класс, например
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;
Это будет хорошая практика, пока дальнейший опыт работы с ООП не поможет вам проанализировать компромиссы с использованием принципов полезности и чистых принципов ООП.
Ответ 6
- Создайте класс Utility как открытый статический класс.
- Определенный служебный метод-метод со статическим ключевым словом
Вызов метода: -
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;
}
}
Ответ 7
да, это не скомпилируется, потому что int-тест, который не поддерживается внутри статического класса, либо делает его как статический int-тест, который будет поддерживаться, и возвращает вывод
Ответ 8
сделайте это.
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);