[過去ログ] ふらっと C#,C♯,C#(初心者用) Part153 (1002レス)
前次1-
抽出解除 必死チェッカー(本家) (べ) 自ID レス栞 あぼーん

このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
654
(1): デフォルトの名無しさん (アウアウウー Saa3-NE3x) [sage] 2022/01/15(土) 01:05:14.25 ID:mkRG7Oi7a(1/4) AAS
>>649
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()メソッド終了時の挙動の詳細を教えてほしいです
メソッドのシグネチャのみたまんま
FromToはIEnumerableを返すのであって1とか3.14を返すんじゃない。

何言ってるのか理解できなかったら川俣さんの記事のイテレーターの
説明でも読んでもらった方が早いよ。
658: デフォルトの名無しさん (アウアウウー Saa3-NE3x) [sage] 2022/01/15(土) 01:57:04.48 ID:mkRG7Oi7a(2/4) AAS
>>648
648(2): デフォルトの名無しさん (ワッチョイ 5f1a-sCjD) [sage] 2022/01/14(金) 23:45:25.88 ID:8g6TvuWW0(1) AAS
こういう実装の隠蔽ってありだと思う?
外部リンク:ideone.com

リポジトリクラスでしか使わないキークラスを外部から勝手に生成されたくないっていう着想なんだが、
特定のクラスからのみメソッド叩かせたいときとかにも使えそうな気はする
雁字搦め感は出てるし、将来の健忘症になった俺が手を付けてしまう恐れも減るしでメリットはある
ただぶっちゃけちまうとinternalで十分では?と他でもない俺自身が思ってしまった
VBは確か型Bが型Aの内側で定義されている時、
BのインスタンスをAが握っているとBのprivateメンバーに
アクセスできる裏技があった気がしたんでVBならそれを使う手はあったかも。

試してみたらやはりC#ではできないw
659: デフォルトの名無しさん (アウアウウー Saa3-NE3x) [sage] 2022/01/15(土) 02:01:13.57 ID:mkRG7Oi7a(3/4) AAS
まあセキリティー的な目的じゃなく単なる精神衛生の問題なら
単純にKeyのコンストラクタをprivateにして必要な個所ではリフレクションで使えばいいよね
660: デフォルトの名無しさん (アウアウウー Saa3-NE3x) [sage] 2022/01/15(土) 02:49:41.70 ID:mkRG7Oi7a(4/4) AAS
「早い者勝ち」にしちゃうのもありかなとか思った。いやねーかw
public class Key
{
  public int Value { get; private set; }
  private static int serial = 0;
  private static Func<Key> func = () => new Key(serial++);

  private Key(int val)
  {
    Value = val;
  }

  public static Func<Key> GetCreator()
  {
    var ret = func; func = null;
    return func;
  }
}
前次1-
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 1.526s*