tagCANDY CGI VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板)
VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板)
[ツリー表示へ]  [ワード検索]  [Home]

タイトル Re^2: ArrayListのソート
投稿日: 2004/12/02(Thu) 02:17
投稿者たくボン
るしぇさんの補足です。

.NET(というかCLR)においてStringクラスは、不変で順序のある参照型として定義されています。
CLRにおいてStringクラスは他のクラスとは少々異なる動作をします。(通常Stringクラスを生成する場
合にはNewを使いませんよね?API等を利用する場合にNewしちゃう場面もありますが・・・)

String型に同じリテラル文字列を代入する場合、同じ文字列がマネージヒープ上(インターンプール)
に既に存在する場合、異なる変数でも同じインスタンスの参照を代入します。(これを文字列のインタ
ーン化と言います。ヘルプでStringクラスのInternメソッドを参照してみてください。またC#等で
ObjectクラスのReeferenceEqualsを使って参照の比較をしてみたらよく挙動がわかるかもしれません
ね。)

つまり、同じリテラル文字列(もしくはnull参照)を代入した値を使用して、Staring.Compare()を使用し
ても参照元が同じなので比較結果が常に等しいというのが原因と考えられます。

- 関連一覧ツリー をクリックするとツリー全体を一括表示します)

古いスレッドにレスはつけられません。