広告

String.Trimのことを何も知らなかった話

思い込みは怖いという話

超今更なんだと思いますが、今日ふとC#.NETでプログラムを書いている時にString.Trimに引数が渡せることを気付きました。
これまで空白除去にしか使っていなかったので脳みそが勝手に空白除去するメソッドとして認識していました。

というわけで、何も知らないままというのもあれなので、Trimの実装を見てみたいと思います。
確認するバージョンは「.NET Framework 4.8」です。

実装を確認してみる

SystemのString.csを確認してTrimメソッドを探すと、オーバーロードされているTrimメソッドを発見しました。
今回は引数がある方の中身を見ていきます。見やすいように整形しています。

代入や比較の際に半角空白を入れたり入れなかったり、記載方法がバラバラなのは気になるけどスルーします。

引数で渡された値を先頭末尾から除外したインデックスを保持しておき、Lengthを計算。
その後FastAllocateStringで新しい文字列の領域を確保して、wstrcpyで内容をコピーする作りのようですね。

文字列に変更がない場合は、そのまま値を返し、文字列が全部消えた場合はString.Emptyを返す作りです。

まとめ

普段何気なく使っているメソッドでも仕様をしっかり確認すれば、気付いていないもっと便利な使い方ができるのかもしれません。
こんなの気付いてないの私だけ?と思っていますが。同じ勘違いをしている同志が1人でも居る可能性にかけて記事にします。

C#, 雑談

Posted by marimo