在 C# 中调用非静态方法有更短的方法吗?

is there shorter way of calling non static method in c#?

我有一个 class StringFormatter 包含方法 RemoveCharFromString.

长期以来,我一直在创建一个 class 的新实例,然后像下面这样使用它:

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

现在我到了一个地步,我只需要一次性使用这个方法 class。我认为可能有更短的方法来完成上述代码,例如:

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

有什么东西吗?

您可以实例化一个 class 并直接调用它的方法之一 - 您的第二个代码示例只需要在构造函数后加一个括号:

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

然而 - 在不知道方法内部的情况下,这里有一些事情需要考虑:

  1. 该方法的名称表明它基本上是从字符串中删除一个特定的字符 - 如果它删除所有出现的所述字符,为什么不直接使用 string.Replace()

  2. 既然这个方法似乎从它的参数中获取了它需要的所有信息,并且不依赖,也不改变 StringFormatter 实例的状态,为什么不让它成为静态的呢?方法?

我觉得 StringFormatter class 是一组适用于字符串类型的方法。因此,一种选择可能是考虑在字符串类型上使用扩展方法

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('%');