C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

String.LastIndexOf の仕様について


(過去ログ 8 を表示中)

[トピック内 4 記事 (1 - 4 表示)]  << 0 >>

■8362 / inTopicNo.1)  String.LastIndexOf の仕様について
  
□投稿者/ melt 二等兵(1回)-(2006/11/18(Sat) 07:03:52)
melt さんの Web サイト

分類:[C#] 


分類:[C#] 

LastIndexOf の動作について、少々疑問に感じたところがあるので投稿させて頂きます。
一応トピックを検索してみましたが、重複してたらすみません。

現在、C++ で C# のような string クラスを実装している関係で、LastIndexOf の動作について調べていたのですが、例えば以下のプログラムを書いた場合、


string str = "あいうえお";

// -1
str.IndexOf("あ", 5);
// -1
str.IndexOf('あ', 5);
// 0
str.LastIndexOf("あ", 5);
// 例外? ← 0 が返されて欲しい、もしくは↑の行で例外を投げて欲しい
str.LastIndexOf('あ', 5);

// 0
str.IndexOf("", 0);
// 5
str.IndexOf("", 5);
// 0
str.LastIndexOf("", 0);
// 4? ← 5 が返されて欲しい
str.LastIndexOf("", 5);


このように、IndexOf と比較した場合に、よく分からない動作をすることがあるのですが、これは仕様なのでしょうか?

また、他に LastIndexOf で変な動作をするというのがあれば教えて頂ければ幸いです。

よろしくお願いします。

0
引用返信 編集キー/
■8363 / inTopicNo.2)  Re[1]: String.LastIndexOf の仕様について
□投稿者/ melt 二等兵(2回)-(2006/11/18(Sat) 07:10:03)
melt さんの Web サイト

分類:[C#] 

あ、使っているのは C#2.0 です。

よろしくお願いしますm(__)m

0
引用返信 編集キー/
■8365 / inTopicNo.3)  Re[2]: String.LastIndexOf の仕様について
□投稿者/ επιστημη 大将(281回)-(2006/11/18(Sat) 08:23:57)
επιστημη さんの Web サイト

分類:[C#] 

追試しました。確かにヘンです。バグ報告なかったかしら?
ソース(sscli)を追いかけてみたところ、
LastIndexOf(char ...) と LastIndexOf(string ...) は
まったく別の実装になってました。
# 前者は後者を呼んでるだけかと思ったけど、そうじゃないみたい。


0
引用返信 編集キー/
■8380 / inTopicNo.4)  Re[3]: String.LastIndexOf の仕様について
□投稿者/ melt 二等兵(3回)-(2006/11/18(Sat) 22:35:08)
melt さんの Web サイト

分類:[C#] 

似たような感じですが、

string str = "あいうえお"

// 0
str.LastIndexOf("あ", 5, 6);
// 例外
str.LastIndexOf('あ', 5, 6);

こんなのもありました……。


> 追試しました。確かにヘンです。バグ報告なかったかしら?

やっぱりバグですよねこれ……。

LastIndexOf って IndexOf との対称性があまり無いみたいですし、どうやって自前で書くべきか迷いますね……。
自分で仕様を考えて対称性のあるメソッドを作るか、C# の string を完全にマネするか、それとも正しい仕様を調べまくって作るか……。

とりあえず、本当に正しい動作はどういったものであるか、分かる人がいましたらよろしくお願いしますm(__)m
# 動いているコードが仕様だと言われたらそれまでですがw

0
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -