簡體   English   中英

有沒有更短的方法在C#中調用非靜態方法?

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

我有一個StringFormatter類,其中包含方法RemoveCharFromString

很長一段時間以來,我一直在創建類的新實例,然后像下面這樣使用它:

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

現在,我不得不在一個類中一次使用此方法。 我認為完成上述代碼可能會有更短的方法,例如:

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

有什么用嗎?

您可以實例化一個類並直接調用它的方法之一-您的第二個代碼示例僅在構造函數之后需要一個括號:

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

但是-在不了解方法內部的情況下,有些事情要考慮:

  1. 該方法的名稱表明它基本上是從字符串中刪除特定的string.Replace()如果它刪除了所有出現的char,為什么不只使用string.Replace()呢?

  2. 由於此方法似乎從其參數中獲取了所需的所有信息,並且不依賴也不更改StringFormatter實例的狀態,因此為什么不將其設置為靜態方法呢?

在我看來,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('%');

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM