C# 在方法之间传递变量值。。。?
有人能帮我在c#中将值从一个类方法传递到另一个类方法吗。我试着查找,但我在代码页中迷失了方向,找不到简单的示例。请看以下内容:C# 在方法之间传递变量值。。。?,c#,oop,C#,Oop,有人能帮我在c#中将值从一个类方法传递到另一个类方法吗。我试着查找,但我在代码页中迷失了方向,找不到简单的示例。请看以下内容: //Main Program Program.cs namespace simplecode { class Program { static void Main(string[] args) { Values Values = new Values(); Values.g
//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的值?我试图从概念上理解这一点,我需要正确的语法。如果有人能解释需要什么或提供一个学习链接,我将不胜感激
谢谢
Mike您可以让方法返回此值:
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();
}
您可以让方法返回此值:
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);
}
}
}
首先,您需要将变量实际存储在某个地方。现在它是方法中的一个局部变量,因此在您为它赋值后,它将立即消失 将其设置为类中的属性,并将该方法设置为实例方法而不是静态方法:
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,允许您从函数内部进行修改(变量通过引用传递,而不是通过默认值传递)。通常,您会从函数返回值。您需要考虑代码如何调用不同的模块 您可能会发现,如果流程复杂,您可能希望查看控制反转,尽管它与主题无关,而且更高级,但它与代码如何链接在一起有关,我觉得这是您潜在的问题
如果要返回多个值,可以使用结构/类或将参数标记为ref,允许您从函数内部进行修改(变量通过引用传递,而不是通过默认值传递)。程序员实际上不需要创建
新值()
按照方法static@canpoyrazo奥卢,说得好。我会更新我的答案,包括这句话。谢谢各位,我得到了无效返回类型的错误。如果我将类型更改为string并返回getName,我会得到错误non-delegate type…非常感谢。在以前的项目中,我试图返回方法名,而不是“return Console.ReadLine()”。我认为合乎逻辑的说法是,您需要返回本地值,对吗?如果是输入值,则返回Console.ReadLine()。我希望我没有弄错。程序员实际上不需要像方法那样创建新值()static@canpoyrazo奥卢,说得好。我会更新我的答案,包括这句话。谢谢各位,我得到了无效返回类型的错误。如果我将类型更改为string并返回getName,我会得到错误non-delegate type…非常感谢。在以前的项目中,我试图返回方法名,而不是“return Console.ReadLine()”。我认为合乎逻辑的说法是,您需要返回本地值,对吗?如果是输入值,则返回Console.ReadLine()。我希望我说得对。我想这就是让我困惑的地方。我注意到很多关于OUT和REF语句的说明,但是现在我想我对返回的内容没有一个清晰的理解。与返回Console.ReadLine()相比,我试图返回实际的方法名;我想这就是让我困惑的地方。我注意到很多关于OUT和REF语句的说明,但是现在我想我对返回的内容没有一个清晰的理解。与返回Console.ReadLine()相比,我试图返回实际的方法名;这也很有帮助,谢谢。我当前的项目是一个简单的登录控制台应用程序,我很可能不得不使用你的方法,因为我不想让值消失。本质上,行:公共字符串MyName{get;set;},只是一个“空容器”,对吗?@MikeB:它是带有支持变量的参数的缩写,即私有字符串\u MyName;公共字符串MyName{get{return{u MyName;}set{{u MyName=value;}}
,但是私有支持变量有一个由编译器生成的秘密名称。确定这说明它是一个速记或快捷方式,但是编译器生成名称的目的只是作为一个空容器,可以随时调用它,而不是在方法中编译时被销毁。对吗?@MikeB:财产就是ob