在方法之间传递变量值
本文关键字:变量值 之间 方法 | 更新日期: 2023-09-27 17:56:04
有人可以帮助我在 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,请表示感谢。
谢谢话筒
您可以让该方法返回此值:
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();
}
首先,您需要将变量实际存储在某个地方。现在它是方法中的一个局部变量,所以在你给它赋值后,它会立即消失。
使其成为类中的属性,并使该方法成为实例方法而不是静态方法:
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);
}
}
}
通常,
您会从函数返回值。您需要考虑代码如何调用不同的模块。
您可能会发现,如果流程很复杂,您可能需要查看控制反转,尽管偏离主题且更高级,但它与代码如何链接在一起有关,我觉得这是您的潜在问题/问题。
如果要返回多个值,则可以使用结构/类或将参数标记为ref,从而允许您从函数内部进行修改(通过引用传递的变量,而不是默认通过值传递它们)。