c#函数之间的值
本文关键字:之间 函数 | 更新日期: 2023-09-27 18:07:29
所以我学习基本的c#,想知道如何从AGE();
和NUMBER();
返回x
和y
,并在Name();
中使用这些变量
现在Name();
参数中的x
和y
是可以理解的错误,因为在构造函数中没有局部变量。但我从函数返回x
和y
。那么如何在Name函数中使用它们呢?
namespace CSharp_001
{
class Program
{
public Program()
{
Name(x, y);
AGE();
NUMBER();
}
public int AGE()
{
int x;
Console.WriteLine(" And enter age: ");
x = Console.Read();
return x;
}
public int NUMBER()
{
int y;
Console.WriteLine(" And favorite number: ");
y = Console.Read();
return y;
}
public void Name(int x, int y)
{
Console.WriteLine("Enter your name: ");
string test = Console.ReadLine();
Console.WriteLine("Hi " + test);
}
static void Main(string[] args)
{
new Program();
Console.ReadLine();
}
}
}
在c#中,值的类型非常重要。当您从控制台中读取时,您将获得一个字符串。但是,Age()
和NUMBER()
函数返回int
s。声明返回int
的函数不能返回string
。您需要将这些值转换为int
,然后才能返回它们:
public int AGE() {
Console.WriteLine(" And enter age: ");
return int.Parse(Console.Read());
}
修复两个函数后,可以这样调用Name()
:
public Program()
{
int x = AGE();
int y = NUMBER();
Name(x, y);
}
或者像这样:
public Program()
{
Name(AGE(), NUMBER());
}
无论哪种情况,如果您想将这些值传递给Name()
函数,则对AGE()
和NUMBER()
的调用必须在对Name()
的调用之前解析。控制台文本表明您希望首先显示Name()
中的提示符。在这种情况下,您可以这样做:
public void Name()
{
Console.WriteLine("Enter your name: ");
string test = Console.ReadLine();
Console.WriteLine("Hi " + test);
int age = AGE();
int number = NUMBER();
}
public Program()
{
Name();
}
教育用途:
public Program()
{
var age = AGE();
var num = NUMBER();
Name(age, num);
}
当函数返回值时,您需要立即存储或使用它。如果你看一下这个例子,在AGE方法中,你有
x = Console.Read();
控制台。Read返回的是存储在x中的值。但是这个x是AGE方法的局部值,其他任何名为x的函数都不会有这个值(它的作用域是AGE方法的局部值)。AGE方法返回这个值,但这并不意味着您可以在其他任何地方使用变量x。
在Program构造函数中调用AGE时,需要保存其返回值。如果保存了该值,则可以将其作为参数传递给Name。
int age = AGE();
Name(age, y);
(假设y是通过呼叫NUMBER设置的)。当Name被调用时,您将能够使用x,并且它将具有您传入的值(上面称为age)。
几点注释:
-
Console.Read
只读取一个字符并返回该字符的UTF-16代码-您应该使用Console.ReadLine
代替并在必要时解析结果。 - 函数应该被命名来描述它们做什么,所以
GetAge
和GetName
将是更合适的函数名 - 构造函数应该只用于将对象初始化为可用状态。您的代码应该在
Main
函数或Main
调用的Program
的单独函数中。 - 变量应该有有意义的名称。
x
和y
没有给出它们代表什么的任何指示。
所以像这样更合适:
class Program
{
public void Run()
{
int age = GetAge();
int number = GetNumber();
GetName(age, number);
}
public int GetAge(){
string age;
Console.WriteLine(" And enter age: ");
age = Console.ReadLine();
return int.Parse(x); // or TryParse and loop until the parse succeeds
}
public int GetNumber(){
string number;
Console.WriteLine(" And favorite number: ");
number = Console.ReadLine();
return int.Parse(number); // or TryParse and loop until the parse succeeds
}
public void Name(int x, int y)
{
Console.WriteLine("Enter your name: ");
string test = Console.ReadLine();
Console.WriteLine("Hi " + test);
}
static void Main(string[] args) {
new Program().Run();
Console.ReadLine();
}
}