中の技術日誌ブログ

C#とC++/CLIと
VBと.NETとWindowsで戯れる
 

目次

Blog 利用状況

ニュース

自己紹介

東京でソフトウェアエンジニアをやっています。
お仕事大募集中です。
記事執筆や、講師依頼とかでも何でもどうぞ(*^_^*)
似顔絵 MSMVPロゴ
MSMVP Visual C# Since 2004/04-2013/03

記事カテゴリ

書庫

日記カテゴリ

00-整理

01-MSMVP

2009年11月11日 #

.NET4からString.IndexOfはStringComparison.Ordinalになります。

http://d.hatena.ne.jp/siokoshou/20091111#p1

ちょっと今の時期にBeta1の記事になってるっぽいですが、String.IndexOfはいままでの挙動と変更になります。

Beta2では少なくともStringComparsion.Ordinalがデフォルトになっています。

以下同じソースコードですが

Console.WriteLine( "AA".IndexOf("〇A") );         
Console.WriteLine( "AA".IndexOf("〇") );           
Console.WriteLine( "A〇A".IndexOf("AA") );       
Console.WriteLine( "〇A〇A".IndexOf("AA") );     
Console.WriteLine( "〇A〇A".IndexOf("〇A") );     
Console.WriteLine( "〇A〇A".LastIndexOf( "〇A" ) );
Console.WriteLine();

Console.WriteLine( "AA".IndexOf( "〇A", StringComparison.Ordinal ) );       
Console.WriteLine( "AA".IndexOf( "〇", StringComparison.Ordinal ) );         
Console.WriteLine( "A〇A".IndexOf( "AA", StringComparison.Ordinal ) );     
Console.WriteLine( "〇A〇A".IndexOf( "AA", StringComparison.Ordinal ) );   
Console.WriteLine( "〇A〇A".IndexOf( "〇A", StringComparison.Ordinal ) );   
Console.WriteLine( "〇A〇A".LastIndexOf( "〇A", StringComparison.Ordinal ) );

-1
-1
-1
-1
0
2

-1
-1
-1
-1
0
2

ターゲットバージョンを3.5に変更すると

0
0
0
1
1
3

-1
-1
-1
-1
0
2

になります。

いままで意識せずに使っていたIndexOfが怖いこと理解していただけましたでしょうか?

“愛々”問題 と言われていました。

posted @ 12:22 | Feedback (845)