有人可以帮助我在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的值?我试图从概念上理解这一点,我需要正确的语法。如果有人能够解释所需要的内容或提供研究链接,请欣赏它。
由于 麦克
答案 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,允许您在函数内部进行修改(通过引用传递的变量,而不是通过默认值传递的值) )。