在方法之间传递变量值?

时间:2013-01-26 19:10:47

标签: c# oop

有人可以帮助我在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的值?我试图从概念上理解这一点,我需要正确的语法。如果有人能够解释所需要的内容或提供研究链接,请欣赏它。

由于 麦克

3 个答案:

答案 0 :(得分: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();
}

答案 1 :(得分: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);
        }
    }
}

答案 2 :(得分:0)

通常,您将从函数返回值。您将需要考虑代码如何调用不同的模块。

您可能会发现流程是否复杂,您可能希望查看控制反转,虽然偏离主题并且更高级,但它与代码链接在一起并且我认为是您的潜在问题/问题有关。

如果要返回多个值,可以使用struct / class或将参数标记为ref,允许您在函数内部进行修改(通过引用传递的变量,而不是通过默认值传递的值) )。