1. ホーム
  2. c#

[解決済み] string.Empty vs null.どっちを使う?

2023-05-20 16:21:48

質問

最近、職場の同僚から string.Empty を使わないで、文字列変数を設定するときに null を使うとスタックが汚れるから?

をしないようにと言っています。

string myString=string.Empty; しかし string mystring=null;

本当に重要なのでしょうか?文字列がオブジェクトであることは知っているので、なんとなくわかるのですが。

愚かな質問だと思いますが、あなたはどう思いますか?

どのように解決するのですか?

null そして Empty は非常に異なるので、任意に切り替えて使うことはお勧めしません。しかし、どちらも余分なコストはありません。 Empty は単一の固定参照 (それを何度でも使用できる) であるためです。

によって引き起こされるスタック上の "pollution"は存在しません。 ldsfld - その懸念は......クレイジーです。をロードする null は間違いなく 僅かに の方が安価ですが、値のチェックに注意しないとヌル参照例外を引き起こす可能性があります。

個人的には、私はどちらも使いません...。もし空の文字列が欲しいなら、私は "" - を使います。インターナルとは は使用ごとのオーバーヘッドがないことを意味します。


IL レベルでは、ここでの "" と Empty の違いは ldstr と ldsfld だけですが、どちらも同じ単一のインターナル文字列参照を提供します。さらに、より最近の .NET バージョンでは、JIT がこれらを直接傍受し、空の文字列参照を生成します。 を使わずに を生成します。基本的に、可読性を除いては、どちらかを気にする理由は全くありません。私はただ "" を使用します。