[過去ログ] ふらっと C#,C♯,C#(初心者用) Part153 (1002レス)
上下前次1-新
抽出解除 レス栞
このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
649(3): デフォルトの名無しさん (ワッチョイ ffbd-qPHf) [] 2022/01/15(土) 00:11:45.90 ID:TZiSYT8I0(1) AAS
質問させてください
using System.Collections.Generic;
class TestEnumerable
{
static public Ienumerable FromTo()
{
yield return 1;
yield return 3.14;
}
static void Main(string[] args)
{
foreach(var I in FromTo())
{
Console.Write(I);
}
}
}
上記のようなコードがあった場合
yield return1を表示、続きから実行されて
yield return3.14を表示すると思うのですが
そのあと、メソッドが終了した場合の処理がイメージできません
FromTo()メソッドが終了した後は何か値がreturnされるのでしょうか?
FromTo()メソッド終了時の挙動の詳細を教えてほしいです
654(1): デフォルトの名無しさん (アウアウウー Saa3-NE3x) [sage] 2022/01/15(土) 01:05:14.25 ID:mkRG7Oi7a(1/4) AAS
>>649
メソッドのシグネチャのみたまんま
FromToはIEnumerableを返すのであって1とか3.14を返すんじゃない。
何言ってるのか理解できなかったら川俣さんの記事のイテレーターの
説明でも読んでもらった方が早いよ。
661: デフォルトの名無しさん (ワッチョイ dfd2-4G0K) [sage] 2022/01/15(土) 03:06:56.37 ID:ccrjJyGq0(1) AAS
>>649
関数内にyield returnがあったらイテレータブロック扱いになって普通の関数じゃなくなる
IEnumerable<T>の約束通り、Tの要素を返してって終端がきたらおわり
662(1): デフォルトの名無しさん (ワッチョイ 7f01-KDxU) [sage] 2022/01/15(土) 11:19:56.44 ID:6qmp/Z4R0(1) AAS
>>649
FromTo()が返すのはIEnumerable
foreachは大雑把に言えば↓に展開される
var iterator = FromTo().GetEnumerator();
while (iterator.MoveNext()){
var I = iterator.Current;
Console.WriteLine(I);
}
イテレータとかイテラブルでググるといい
.NETの型名だとIEnumrator<T>とIEnumerable<T>
上下前次1-新書関写板覧索設栞歴
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.043s