StreamReader sr = new StringReader(filePath);
foreach (Strins s in sr.ReadLine())
{
}
上記プログラムでは
型'char'を'string'に変換できません。
と出てきて無理でした。
http://stackoverflow.com/questions/286533/filest …
此方を参考に、下記プログラムを書きました。
private static IEnumerable<string> ReadLine()
{
string str;
while ((str = sr.ReadLine()) != null)
{
yield return str;
}
}
private static void loop()
{
foreach (string str in ReadLine())
{
}
}
1. 下記のものは動くのですが、なぜ最初に書いたものではダメなのでしょうか?
2. もっと綺麗(スリム)に書くことはできないでしょうか?
3.
string str;
while ((str = sr.ReadLine()) != null)
↓
while((string str = sr.ReadLine()) != null)
とするとエラーが出るのはなぜでしょうか?
宜しくお願いします。
No.1ベストアンサー
- 回答日時:
1. 逆に,なぜダメではないと思ったのでしょうか。
StreamReader.ReadLineの戻り値,foreachの機能から,エラーであることは容易に想像がつきますが。
2. using + whileループが通常一番の書き方です。
TextReaderをIEnumerable<string>によく変換するのであれば,拡張メソッド作るのもよいでしょうが。
3. 宣言は式ではないからです。
ありがとうございました。
最近foreachに興味をもち、
forやwhileをみるとforeachに書き換えたい気持ちをおさえられなくて><
実用では無理にforeachを利用せずにusing+whileで書いた方がよさそうですね。
No.2
- 回答日時:
1. StreamReader.ReadLineは配列型を返さないから。
2. 普通はEndOfStreamで判断してReadLineするwhileループで、わざわざ反復子を定義してまでforeach使う理由はないんじゃないかなぁ。
3. #1でも言われてますが宣言文は式じゃないので、式のように代入結果を参照することはできません。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# C# で、あるフォルダー内にあるすべてのテキストファイルを別のフォルダーにコピーする。 4 2022/11/21 13:23
- C言語・C++・C# プログラミングの授業の課題です 1 2023/01/17 22:15
- C言語・C++・C# C#テキストボックスの文字を配列にいれてその後表示する 4 2022/07/17 04:47
- C言語・C++・C# 宣言する関数の形が決まっている状態で、 str1とstr2の文字列をこの順に引っ付けてstrに保存し 2 2022/05/30 18:21
- C言語・C++・C# c言語配列の結合についてです。 なぜうまくいかないのでしょうか。 #include <stdio.h 4 2022/05/30 22:42
- C言語・C++・C# c言語 プログラムのエラー 1 2023/02/11 20:31
- Visual Basic(VBA) ExcelVBAに関する質問 3 2023/02/17 10:47
- Java java 入力 3 4 3 出力 ABC DEFG HIJ このようなプログラムの書き方を教えてくだ 2 2022/07/15 14:18
- C言語・C++・C# C# DatagridviewにExcelシートを反映するとエラーが出る 2 2023/05/06 17:12
- オープンソース Try Kotlinで readLine()を使うには 1 2023/03/27 21:06
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・思い出すきっかけは 音楽?におい?景色?
- ・あなたなりのストレス発散方法を教えてください!
- ・もし10億円当たったら何に使いますか?
- ・何回やってもうまくいかないことは?
- ・今年はじめたいことは?
- ・あなたの人生で一番ピンチに陥った瞬間は?
- ・初めて見た映画を教えてください!
- ・今の日本に期待することはなんですか?
- ・【大喜利】【投稿~1/31】『寿司』がテーマの本のタイトル
- ・集中するためにやっていること
- ・テレビやラジオに出たことがある人、いますか?
- ・【お題】斜め上を行くスキー場にありがちなこと
- ・人生でいちばんスベッた瞬間
- ・コーピングについて教えてください
- ・あなたの「プチ贅沢」はなんですか?
- ・コンビニでおにぎりを買うときのスタメンはどの具?
- ・おすすめの美術館・博物館、教えてください!
- ・【お題】大変な警告
- ・【大喜利】【投稿~1/20】 追い込まれた犯人が咄嗟に言った一言とは?
- ・洋服何着持ってますか?
- ・みんなの【マイ・ベスト積読2024】を教えてください。
- ・「これいらなくない?」という慣習、教えてください
- ・今から楽しみな予定はありますか?
- ・AIツールの活用方法を教えて
- ・最強の防寒、あったか術を教えてください!
- ・【大喜利】【投稿~1/9】 忍者がやってるYouTubeが炎上してしまった理由
- ・歳とったな〜〜と思ったことは?
- ・モテ期を経験した方いらっしゃいますか?
- ・好きな人を振り向かせるためにしたこと
- ・スマホに会話を聞かれているな!?と思ったことありますか?
- ・それもChatGPT!?と驚いた使用方法を教えてください
- ・見学に行くとしたら【天国】と【地獄】どっち?
- ・これまでで一番「情けなかったとき」はいつですか?
- ・この人頭いいなと思ったエピソード
- ・あなたの「必」の書き順を教えてください
- ・14歳の自分に衝撃の事実を告げてください
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
C++初心者です stirng
-
C#でIPアドレスの取得について
-
【Java8以降】csvファイルの複...
-
特定の文字列が一致する行から...
-
「指定されたキャストは有効で...
-
boostスマートポインタ(shared_...
-
jap実行時のTomcatのエラーに困...
-
マルチスレッドで同時にFTPアッ...
-
System.err. printlnとSystem.o...
-
ダブルクォーテーションを含む...
-
IF関数でEmpty値を設定する方法。
-
wsprintf関数の使い方について
-
パソコンキーボードで時分秒を...
-
ORA-01858: 数値を指定する箇所...
-
JSPやサーブレットでSystem.out...
-
yyyymmddからyyyy/mm/d...
-
Java配列でNullPointerExceptio...
-
JSPでImportエラーになります
-
javaで質問です。 文字列2023/2...
-
requestの値が削除されません…
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
C#でIPアドレスの取得について
-
特定の文字列が一致する行から...
-
C# ListBoxのアイテムをユーザ...
-
マルチスレッドで同時にFTPアッ...
-
【Java8以降】csvファイルの複...
-
Delphiで改行文字の置換がうま...
-
string→CStringの型変換について
-
C#での関数テーブルの作り方
-
strcmp関数などでの複数の文字...
-
ArrayListを改良したい
-
GDI+ DrawString() で指定範囲...
-
GridViewで複数のDropDownList...
-
C#での関数テーブルの作り方
-
jap実行時のTomcatのエラーに困...
-
lilfesがよく分からない
-
「指定されたキャストは有効で...
-
strtokでの空文字への置き換え
-
c#で(",")区切りのcsvファイル...
-
std::stringの継承
-
C#のStreamReaderでのforeach
おすすめ情報