函数之间的C#值

时间:2015-08-12 17:59:59

标签: c# variables return

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

由于构造函数中没有局部变量,因此x参数中的yName();是可以理解的错误。但是我从函数返回了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();
        }
    }
}

4 个答案:

答案 0 :(得分:2)

在c#中,值的 Type 非常重要。当您从控制台读取时,您会得到一个字符串。但是,您的Age()NUMBER()函数会返回int个。声明为返回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();
}

答案 1 :(得分:0)

出于教育目的:

public Program()
{
    var age = AGE();
    var num = NUMBER(); 
    Name(age, num);
}

答案 2 :(得分:0)

当函数返回值时,您需要存储它或立即使用它。如果你看一下你的例子,在AGE方法中,你有

    x = Console.Read();

Console.Read返回您存储在x中的值。但是这个x对于AGE方法来说是本地的,没有其他任何叫做x的东西会有这个值(它的范围是AGE方法的本地)。 AGE方法返回此值,但这并不意味着您可以在其他任何位置使用变量x。

在Program构造函数中调用AGE时,需要保存其返回值。如果保存了该值,则可以将其作为参数传递给Name。

    int age = AGE();
    Name(age, y);

(假设您通过拨打NUMBER设置了y)。当调用Name时,你将能够使用x,它将具有你传入的值(上面称为年龄)。

答案 3 :(得分:0)

一些评论:

  • Console.Read只读取一个字符并返回该字符的UTF-16代码 - 您应该使用Console.ReadLine代替并在必要时解析结果。
  • 应该命名函数来描述他们做什么,因此GetAgeGetName将是更合适的函数名称
  • 构造函数只应用于将对象初始化为可用状态。您的代码应该在Main函数中,或者在Program Main调用x的单独函数中。
  • 变量应该有有意义的名称。 yclass 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(); } } 并未表明他们所代表的内容。

所以这样的事情会更合适:

template test_template{
    subject = test
    body = {{.Eval .Alert.Vars.average_runtime}} seconds
}
alert test_alert{
    template test_template
    $average_runtime = avg(q("avg:metric_name", "24h",""))
    crit = $average_runtime > 150.0
}