あるメソッドから2つの配列を渡して別のメソッドからユーザー情報を収集するC#

私は特定のコードを探しているわけではなく、むしろ情報とガイダンスを探しています。私は学びたいが、誰かがそれをコード化しないようにしたい。

2つの配列を別のメソッドに渡してユーザー入力を満たす方法を探しています。私はこれを理解することができないと私はテキストと講義だけでなく、様々なサイトを研究し、これを行うために必要な技術を見つけることができません。私は、1つの配列を別のメソッド(IEのavg/sumなど)に渡す方法を知っていますが、1つの別のメソッドから2つの配列を埋める方法はありません。どんな指導や情報も高く評価されます。これは私が今までに持っているもの、あるいはむしろ私が残したものです。私は他の方法をかなり完成させました。デバッグ段階に移行するには、この部分が必要です。

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

namespace PhoneDial
{
    class Program
    {


       //Get player names and their scores and stores them into array for an unknown number of players up to 100
        static void InputData(string[] nameList, int[]playerScore)
        {
            string userInput;
            int count = 0;

            do
            {
                Console.Write("\nEnter a players name: ");
                userInput = Console.ReadLine();
                if (userInput != "Q" && userInput != "q")
                {
                    nameList[0] = Console.ReadLine();
                    ++count;

                }
                else break;

                Console.WriteLine("Enter {0}'s score:", userInput);
                playerScore[0] = Convert.ToInt32(Console.ReadLine());


            } while (userInput != "Q" && userInput != "q");


        }

        //Declare variables for number of players and average score and two arrays of size 100 (one for names, one for respective scores
        //Calls functions in sequence, passing necessary parameters by reference
        //InputData(), passing arrays and number of players variable by reference
        //DisplayPlayerData(), passing arrays and number of players by reference
        //CalculateAverageScore(), passing arrays and number of players by reference. Store returned value in avg variable
        //DisplayBelowAverage(), passing arrays and number of players variable by reference, passing average variable by value
        static void Main(string[] args)
        {
            string[] nameList = new string[100];
            int[] playerScore = new int[100];
            int count = 0, avg = 0;

            InputData(nameList, playerScore);


        }
0
静的void InputData(string [] name、int [] score、ref int numberOfPlayers)を使用する必要がある静的void InputData(ref string name、
追加された 著者 Piotr Auguscik,
2つの配列を保持するクラスを作成するのはどうですか?あなたは好きなものの周りをこれを渡すことができます...
追加された 著者 Mikael Härsjö,
クラスを作成するとmain()からそれを削除しますか?
追加された 著者 user1174357,

3 答え

あなたの質問は完全にはわかりませんが、私が理解しているところでは、メソッドの配列を宣言して、別のメソッドに渡して渡すだけでいいです。

public void MethodA()
{
    string[] stringArray = new string[100];

    MethodB(stringArray);
}

public void MethodB(string[] stringArray)
{
   //Fill the array
    stringArray[0] = "Hello";

   //...
}

しかし、変数参照をメソッドに渡してそのメソッドに配列を作成させたい場合は、 ref キーワードをあなたは配列変数の標準変数を持っています)。そのようです:

public void MethodA()
{
    string[] stringArray;

    MethodB(ref stringArray);

   //Array is now created and filled
}

public void MethodB(ref string[] stringArray)
{
   //Create the array
    stringArray = new string[100];

   //Fill the array
    stringArray[0] = "Hello";

   //...
}

2つの配列でこれらの2つのアプローチのどちらかを行うには、パラメータは同じですが同じです。すなわち:

public void MethodB(string[] array1, int[] array2) { }

public void MethodB(ref string[] array1, ref int[] array2) { }
3
追加された
いずれの方法を使用しても、配列に格納されている値を変更することができます。しかし、2番目のアプローチ( < code> ref キーワード)は、配列を参照渡しします。これは、値だけではなく、変数を参照して変数を初期化できることを意味します。
追加された 著者 Samuel Slade,
ああ、ありがとう。私はこれが私が探していたものだと思います。家に帰るときに試してみるよ。
追加された 著者 user1174357,
あなたの最初の方法を示すためにコードを更新しました、それは正しい方法でしょうか?また、どちらか一方の方法を他の方法よりも上手くやる目的は何ですか? 2番目の値は配列の値を変更すると思います。
追加された 著者 user1174357,

arrayではなくDictionaryを使用します。

Dictionary Results = new Dictionary();

http://msdn.microsoft.com/en -us/library/x525za90%28v = vs.110%29.aspx

3
追加された
私たちはまだクラスの辞書をカバーしていません。コード内のコメントは、私たちが従わなければならない指示です。 :(
追加された 著者 user1174357,

変数nameListとplayerScoreをグローバル変数Program {(変数を静的にしてそれらのリストを作るのを忘れないでください)の下に置くことでグローバルにすることができます。

InputDataで.addメソッドを使用して、2つの変数に追加値を追加します。

多分、2つの配列の代わりに辞書を使うのも良い考えです。

私はこれが助けて欲しい

1
追加された
私はどちらの方法も私にとって正しいとは思わない。コード内のコミッションはラボプロジェクトの指示です。私たちは辞書をまだカバーしていません。もし私が誤解されていなければ、それらをグローバルにMain()から持ち出すことはありませんか?
追加された 著者 user1174357,