1つの文字列に文字列関数や改ざんを使用するための最良の方法は何でしょうか?

StackOverflow https://stackoverflow.com/questions/954151

質問

どのようなコードを書くための最良の方法である必要があります:

1)

Dim current = Request.Path
current = current.Remove(0, 1)
current = current.Replace(".aspx", "")

2)

Dim current = Request.Path.Remove(0, 1).Replace(".aspx", "")

3)

Dim current = Request.Path
Dim current2 = current.Remove(0, 1)
Dim current3 = current.Replace(".aspx", "")

または1-2は違いはありません?

役に立ちましたか?

解決

これらはすべて同じです。試してみてください。

Path.GetFileNameWithoutExtension(Request.Path)

他のヒント

すべての3つは基本的に同じである。

は、文字列は不変です覚えておいてください。あなたは、文字列でメソッドを呼び出すたびに、それはそうRemove()を呼び出すと、その後Replace()を呼び出すために使用される新しいオブジェクトを作成し、新しい文字列オブジェクトを割り当てます。

1&2は、基本的に同一です。あなたは3つの別々の変数を使用しているため、第3位は少し異なっているので、彼らは後に使用することができますので、あなたはこれらの文字列への参照を握っています。ガベージコレクタは、あなたが変数として中間文字列を格納するかどうか、全ての3つの例をどのように処理するかを知っていて、しかしほぼ同じそれらを処理する必要があります。

私はそれが少ないコード行だと読みやすさをsacraficeませんが、それはまだコードのかなり短いビットだという理由だけで、#2を使用することになります。

これらの呼び出しが例外をスローすることができます。おもちゃコードの場合、それはあなたがパスを取得した後、あなたが削除を呼び出す前に、あなたはString.NullOrEmptyと長さに対してチェックする必要があり、チェックすることはない大丈夫だけど。だから、それは私が#2を避けるだろう理由です。あなたがこの方法でどこか他の中間値(パスとCURRENT2として現在)を使用する必要がない限り、それ以外は、#1は、クリーナーようです。

あなたはそれらのメソッドのすべてのうち、同じ性能が得られますので、文字列は.NETで不変です。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top