
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を探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
C# ListBoxのアイテムをユーザ...
-
マルチスレッドで同時にFTPアッ...
-
strcmp関数などでの複数の文字...
-
【Java8以降】csvファイルの複...
-
System.err. printlnとSystem.o...
-
C言語のポインターに関する警告
-
1~100までの数字を表示し、か...
-
JSPやサーブレットでSystem.out...
-
オブジェクトの中のプロパティ...
-
ORA-01858: 数値を指定する箇所...
-
VB.net 引数で配列変数を渡す際...
-
「例外 *** は対応する try 文...
-
int型のゼロ埋め
-
ループ処理の際、最後だけ","を...
-
Log4jで機能毎に別ファイルへ出...
-
JSPにて、変数を利用してフォン...
-
動的配列が存在(要素が有る)か...
-
java キーボード入力された値の...
-
論理演算子”||”またはの入力方法
-
「配列定数は、イニシャライザ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
C# ListBoxのアイテムをユーザ...
-
【Java8以降】csvファイルの複...
-
特定の文字列が一致する行から...
-
C#でIPアドレスの取得について
-
マルチスレッドで同時にFTPアッ...
-
Delphiで改行文字の置換がうま...
-
jap実行時のTomcatのエラーに困...
-
strcmp関数などでの複数の文字...
-
C# JSONについて
-
C#での関数テーブルの作り方
-
string→CStringの型変換について
-
「指定されたキャストは有効で...
-
C#のdelegateについて
-
C#のStreamReaderでのforeach
-
strtokでの空文字への置き換え
-
C++/CLI 関数がインポートでき...
-
GridViewで複数のDropDownList...
-
クラスの変換について
-
java HashMapで数値データを取...
-
決まった拡張子のファイルだけ...
おすすめ情報