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

时间:2018-11-06 06:58:41

标签: c# instance non-static

我有一个类404 not found,其中包含方法StringFormatter

很长一段时间以来,我一直在创建类的新实例,然后像下面这样使用它:

RemoveCharFromString

现在,我不得不在一个类中一次使用此方法。我认为完成上述代码可能会有更短的方法,例如:

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

有东西吗?

2 个答案:

答案 0 :(得分:3)

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

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

但是-在不了解方法内部的情况下,有些事情要考虑:

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

  2. 由于此方法似乎从其参数中获取了所需的所有信息,并且不依赖于StringFormatter实例的状态,也不更改其状态,所以为什么不使其成为静态方法呢?

答案 1 :(得分:0)

听起来像StringFormatter类是一堆适用于字符串类型的方法。因此,一种选择是考虑对字符串类型使用扩展方法

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