c#函数之间的值

本文关键字:之间 函数 | 更新日期: 2023-09-27 18:07:29

所以我学习基本的c#,想知道如何从AGE();NUMBER();返回xy,并在Name();中使用这些变量

现在Name();参数中的xy是可以理解的错误,因为在构造函数中没有局部变量。但我从函数返回xy。那么如何在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#函数之间的值

在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代替并在必要时解析结果。
  • 函数应该被命名来描述它们做什么,所以GetAgeGetName将是更合适的函数名
  • 构造函数应该只用于将对象初始化为可用状态。您的代码应该在Main函数或Main调用的Program的单独函数中。
  • 变量应该有有意义的名称。xy没有给出它们代表什么的任何指示。

所以像这样更合适:

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();
    }
}