.NETは、参照によって値が等しい文字列を作成するのに邪魔にならないようです。
LINQPadでは、インターン文字列定数をバイパスすることを期待して、次のことを試しました。
var s1 = new string("".ToCharArray());
var s2 = new string("".ToCharArray());
object.ReferenceEquals(s1, s2).Dump();
しかし、それはを返しますtrue
。ただし、他のオブジェクトstring
と確実に区別できるものを作成したいと思います。string
(ユースケースは、オプションのパラメーターに使用する番兵値を作成することです。WebFormsをラップしています。Page.Validate()
呼び出し元がオプションの検証グループ引数を指定したかどうかに応じて、適切なオーバーロードを選択したいと思います。発信者がその引数を省略したかどうか、または私のデフォルト値と等しい値を渡したかどうかを検出します。明らかに、この特定のユースケースにアプローチする他のあまり難解な方法はありませんが、この質問の目的はより学術的です。)、