フィードバックのコメントでNyaRuRuさんが内部的にはNLS APIを呼び出しているだけという事がわかりました。やっぱりWindowsの文字の重み付けがおかしいです。ありがとうございました。
で、終わるかと思ったのですが、Visual Studio 2010 CTP環境(Visual Studio 2010 Version 10.0.11001.1 CTP2VPC)で、Console.WriteLine("{0}", "愛々,1,2,3".IndexOf(","))を実行すると2が返ってきます。。
検証時の設定ロケールは以下の通り。
User Locale : Japanese
System Locale : English / US
うーーーーん。。.NET FX 4.0で実装変わったのか、Windows 2008でNLSの文字の重み付けが違うのか検証しないと行けなくなってきた。。
とりあえず時間切れ。
コメント
こんにちわ。いつも拝見してます。
.NET FX 4.0 の件は、これと関係ありますか?
「Breaking changes to the String class」
Console.WriteLine(“{0}”, “愛々,1,2,3”.IndexOf(“,”, StringComparison.Ordinal));
だと、2が返ってきますので。
コメント見る前にものがたりさん記事から4.0での変更を知って続編記事を書いてしまった。
書いた内容は。。まぁ愚痴です。