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

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

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

ループ内でインスタンスを呼び出す際の引数について

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

■90063 / inTopicNo.1)  ループ内でインスタンスを呼び出す際の引数について
  
□投稿者/ タマ (1回)-(2019/02/03(Sun) 13:24:28)

分類:[C#] 

初歩的な質問ですみません。

ループ処理内で引数をインスタンスに渡す処理を作っています。
ループ処理で引数を渡す都度、引数が参照元の値に戻りますが、
インスタンス内の計算値を引き継いでループする方法はあるのでしょうか。
(ループ内のコードがかなり長くなったので、外だしできればというものです)

以下のコードイメージで、
myCnt1が1,2,3,4,5、
myCnt2が11,12,13,14,15
と増えていくようなことができないかというものです。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Test_For文
{
    class Program
    {
        static void Main(string[] args)
        {
            Program Inst_myLoop = new Program();

            int LoopCnt = 0;
            int myCnt1 = 0;
            int myCnt2 = 10;

            for (LoopCnt = 1; LoopCnt<=5; LoopCnt++)
            {
                Inst_myLoop.myLoop(myCnt1, myCnt2);
            }
            Console.ReadKey();
        }

        public void myLoop(int myCnt1, int myCnt2)
        {
            myCnt1 = myCnt1 + 1;
            myCnt2 = myCnt2 + 1;
            Console.WriteLine(myCnt1 + " " + myCnt2);   //■ここが初期値になってしまう。
        }
    }
}

引用返信 編集キー/
■90064 / inTopicNo.2)  Re[1]: ループ内でインスタンスを呼び出す際の引数について
□投稿者/ Hongliang (750回)-(2019/02/03(Sun) 13:37:25)
案1. refで受け渡しする
// 呼び出し元
Inst_myLoop.myLoop(ref myCnt1, ref myCnt2);
// メソッド定義
public void myLoop(ref int myCnt1, ref int myCnt2)

案2. 引数をクラスでまとめる
class LoopParameter {
    public int Count1 { get; set; }
    public int Count2 { get; set; }
}
// 呼び出し元
var para = new LoopParameter() { Count1 = 0, Count2 = 10 };
for (int LoopCnt = 1; LoopCnt<=5; LoopCnt++)
{
     Inst_myLoop.myLoop(para);
}
// メソッド定義
public void myLoop(LoopParameter para)
{
    para.Count1++;
    para.Count2++;
}

案3. タプルで返す (Visual Studioだと2017以降限定)
// 呼び出し元
(myCnt1, myCnt2) = Inst_myLoop.myLoop(myCnt1, myCnt2);
// メソッド定義
public (int, int) myLoop(int myCnt1, int myCnt2)
{
    myCnt1++;
    myCnt2++;
    return (myCnt1, myCnt2);
}

引用返信 編集キー/
■90065 / inTopicNo.3)  Re[2]: ループ内でインスタンスを呼び出す際の引数について
□投稿者/ タマ (3回)-(2019/02/04(Mon) 00:47:10)
ありがとうございます!
refは勉強しだした当初にありましたが、いざ使う際にはすっかり忘れてました。
classまとめはこんな方法があったのですね。
別クラスに定義して直接参照する形で試してみたのですが、うまくいかずでした。
タプルは名前は知ってるくらいでした。。

諸々、調べてみます!
引用返信 編集キー/

このトピックをツリーで一括表示


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

このトピックに書きこむ