0

C#であるクラスメソッドから別のクラスメソッドに値を渡すのを手伝ってくれる人はいますか? 調べてみましたが、コードのページで迷子になり、簡単な例が見つかりません。以下を見てください。

//Main Program Program.cs
namespace simplecode
{

    class Program
    {
        static void Main(string[] args)
        {
            Values Values = new Values();
            Values.getName();
        }
    }
}


//Separate class file or object Values.cs 


namespace simplecode
{
    public class Values
    {
        public static void getName()
        {
            Console.Clear();
            Console.Write("Enter name: ");
            string myName = Console.ReadLine();
        }
    }
}

これを実行すると、メイン プログラムが getName を実行し、myName 変数を格納できます。メイン プログラムまたは別の別のクラス メソッドから myName の値を取得するにはどうすればよいですか? これを概念的に理解しようとしていますが、適切な構文が必要です。誰かが必要なものを説明したり、研究リンクを提供したりできる場合は、感謝します。

ありがとうマイク

4

3 に答える 3

2

メソッドがこの値を返すようにすることができます。

public static string getName()
{
    Console.Clear();
    Console.Write("Enter name: ");
    return Console.ReadLine();
}

次に、メイン プログラムでメソッドを呼び出し、結果をローカル変数に格納します。

static void Main(string[] args)
{
    string myName = Values.getName();
}

は静的メソッドであるため、呼び出すためにクラスgetNameのインスタンスを作成する必要がないことに注意してください。Valuesタイプ名で直接呼び出すことができます。

一方、getNameメソッドが静的でない場合:

public string getName()
{
    Console.Clear();
    Console.Write("Enter name: ");
    return Console.ReadLine();
}

次に、インスタンスが必要です。

static void Main(string[] args)
{
    Values values = new Values();
    string myName = values.getName();
}
于 2013-01-26T19:12:22.093 に答える
1

まず、実際に変数をどこかに保存する必要があります。現在、これはメソッド内のローカル変数であるため、値を割り当てるとすぐに消えます。

それをクラスのプロパティにし、メソッドを静的メソッドではなくインスタンス メソッドにします。

namespace simplecode
{
    public class Values
    {

        public string MyName { get; set; }

        public void getName()
        {
            Console.Clear();
            Console.Write("Enter name: ");
            MyName = Console.ReadLine();
        }
    }
}

これで、メソッドを呼び出して、後で値を取得できます。

namespace simplecode
{

    class Program
    {
        static void Main(string[] args)
        {
            Values myValues = new Values();
            myValues.getName();
            Console.WriteLine(myValues.MyName);
        }
    }
}
于 2013-01-26T19:16:18.707 に答える
0

通常、関数から値を返します。コードがさまざまなモジュールを呼び出す方法を考えてみてください。

フローが複雑な場合は、制御の反転を調べたいと思うかもしれませんが、トピックから外れてより高度なものは、コードがどのように連鎖されているかに関連しており、あなたの根底にある質問/問題だと思います.

返す値が複数ある場合は、構造体/クラスを使用するか、パラメーターを ref としてマークして、関数内から変更できるようにすることができます (デフォルトで行われる値渡しとは対照的に、参照によって渡される変数)。

于 2013-01-26T19:17:55.767 に答える