есть более короткий способ вызова нестатического метода в C #? - PullRequest
0 голосов
/ 06 ноября 2018

У меня есть класс StringFormatter, который содержит метод RemoveCharFromString.

Долгое время я создавал новый экземпляр класса, а затем использовал его следующим образом:

[...]
StringFormat sf = new StringFormat();
string exampleString = sf.RemoveCharFromString(inputString, '%');
[...]

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

[...]
string exampleString = new StringFormat.RemoveCharFromString(inputString, '%');
[...]

Есть что-то для этого?

Ответы [ 2 ]

0 голосов
/ 06 ноября 2018

Похоже, класс StringFormatter - это набор методов, которые работают с типом string. Поэтому одним из вариантов может быть использование методов расширений для строкового типа вместо

public static class StringFormatter
{
    public static string RemoveCharFromString(this string value, char charToRemove)
    {
        //do your logic and then return a string 
    }
}

Тогда используйте его

var exampleString = inputString.RemoveCharFromString('%');
0 голосов
/ 06 ноября 2018

Вы можете создать экземпляр класса и напрямую вызвать один из его методов - вашему второму примеру кода нужно просто поставить скобки после конструктора:

string exampleString = new StringFormatter().RemoveCharFromString(inputString, '%');

Однако - здесь есть что рассмотреть, не зная внутренности метода:

  1. Название метода предполагает, что он в основном удаляет определенный символ из строки. Если он удаляет все вхождения указанного символа, почему бы просто не использовать string.Replace()?

  2. Поскольку этот метод, кажется, получает всю необходимую ему информацию из своих аргументов и не использует и не изменяет состояние экземпляра StringFormatter, почему бы не сделать его статическим методом?

...