Hatena::ブログ(Diary)

当面C#と.NETな記録 このページをアンテナに追加 RSSフィード

2009/11/12 (木)

[] string の IndexOf は .NET4 でもカルチャー依存のまま  string の IndexOf は .NET4 でもカルチャー依存のままを含むブックマーク  string の IndexOf は .NET4 でもカルチャー依存のままのブックマークコメント

昨日の記事は例が悪かったのでわんくまの中さんに正反対に誤読されて残念なので、わかりやすく一覧表にしてみました。

string の StartsWith, EndsWith, IndexOf, LastIndexOf のカルチャー依存/非依存(ordinal)の状況

.NET2〜3.5.1カルチャー依存
.NET4 CTPordinal
.NET4 beta1カルチャー依存 (元に戻した)
.NET4 beta2カルチャー依存
.NET4 正式版カルチャー依存 (たぶん)

CTP ではセキュアな変更を行ったものの、互換性のために beta1 以降元に戻されました。

BCL チームによると

UPDATE for .NET 4 Beta 1 In order to maintain high compatibility between .NET 4 and previous releases, we have decided to revert this change. The behavior of String's default partial matching overloads and String and Char's ToUpper and ToLower methods now behave the same as they did in .NET 2.0/3.0/3.5. The change back to the original behavior is present in .NET 4 Beta 1. We apologize for any interim confusion this may cause. We continue to recommend being explicit about the string comparison behavior you want, by always specifying a StringComparison value for the methods on String that accept it.

http://blogs.msdn.com/bclteam/archive/2008/11/04/what-s-new-in-the-bcl-in-net-4-0-justin-van-patten.aspx

だそうです。

ちなみに Silverlight3 は ordinal です。

そしてもう一度書いておくと、BCL Team 曰く「StringComparison パラメータをとるオーバーロードが存在するときはいつでも、このパラメータをとらないオーバーロードの代わりにそれを使ってください。それは、あなたのコードをより明白で維持するのをより簡単にします。」だそうです。

推奨事項は http://blogs.msdn.com/bclteam/archive/2005/06/01/424012.aspx

また、FxCop が指摘してくれるので使うことをおすすめします。

何が危ないの?って問題は昨日の記事を読んでください。

この問題とは別に〇の問題などが修正されているようです。

2005 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 11 | 12 |
2006 | 01 | 02 | 03 | 04 | 06 | 09 | 11 | 12 |
2007 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2008 | 01 | 02 | 03 | 04 | 05 | 06 | 08 | 09 | 10 | 12 |
2009 | 01 | 03 | 04 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2010 | 07 |
2011 | 04 | 07 | 10 |
2012 | 04 | 12 |
2013 | 08 |
2014 | 03 | 08 |
2017 | 09 |