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 的值?我试图从概念上理解这一点,我需要正确的语法。如果有人可以解释需要什么或提供学习链接 id 不胜感激。

谢谢迈克

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 回答