gpt4 book ai didi

c# - 无法将值分配给稍后要引用的函数内的整数 - 范围问题 - 我认为

转载 作者:行者123 更新时间:2023-11-30 20:37:37 24 4
gpt4 key购买 nike

我正在学习 C#。 (6 小时)我对 Ruby 和 Javascript 更熟悉了,我发现 C# 很有趣,但它允许你做的事情更严格,所以我重新发现了简单的功能。我正在尝试构建一个简单的计算器,只是为了过渡到 C# 做事方式,但我一直遇到范围问题。

这是代码。 NumSelect 函数正在破坏它。我希望用户能够在控制台中输入 2 个数字,然后它们将被添加。一旦成功,我将创建其他数学运算并加入一些逻辑,让用户选择他们想要执行的运算,然后询问他们的输入,然后进行计算。

错误是

calculator.cs(18,9): error CS0103: The name `number1' does not exist in the current context

它在 NumSelector 函数之外的 number1 和 number2 的实例中命中它。所以这似乎是一个范围问题,但我无法找出在函数中分配这些变量的正确方法,所以我只需要这样做一次。

using System;

class SimpleMath
{
public int Add(int number1, int number2)
{
int result = number1 + number2;
return result;
}
public int Subtract(int number1, int number2)
{
int result = number1 - number2;
return result;
}
//this function will assign the inputs to variables
public int NumSelect()
{
number1 = Console.ReadLine;
number2 = Console.ReadLine;
}
static void Main()
{
SimpleMath operation = new SimpleMath();

Console.WriteLine("Give me two numbers and I will add them");
operation.NumSelect();
int result = operation.Add(number1, number2);
Console.WriteLine("{0} + {1} = {2}", number1, number2, result);

}
}

最佳答案

好吧,您需要决定这些数字是否是您对象状态的一部分。如果是,请将它们设为字段。如果他们不是,就不要。在这种情况下,我可能会将它们保留为局部变量并更改您的 NumSelect 代码以简单地返回用户输入的 一个 数字 - 并调用它两次:

public int NumSelect()
{
string line = Console.ReadLine();
return int.Parse(line);
}

static void Main()
{
SimpleMath operation = new SimpleMath();

Console.WriteLine("Give me two numbers and I will add them");
int number1 = operation.NumSelect();
int number2 = operation.NumSelect();
int result = operation.Add(number1, number2);
Console.WriteLine("{0} + {1} = {2}", number1, number2, result);
}

可以更改整个类以创建值字段,并删除参数,如下所示:

class SimpleMath
{
private int number1;
private int number2;

public int Add()
{
int result = number1 + number2;
return result;
}

public int Subtract()
{
int result = number1 - number2;
return result;
}

public int SelectNumbers()
{
number1 = int.Parse(Console.ReadLine());
number2 = int.Parse(Console.ReadLine());
}

static void Main()
{
SimpleMath operation = new SimpleMath();

Console.WriteLine("Give me two numbers and I will add them");
operation.NumSelect();
int result = operation.Add();
Console.WriteLine(
"{0} + {1} = {2}",
operation.number1,
operation.number2,
result);
}
}

不是对我来说是最好的方法 - 我会采用在 Main 中使用局部变量的早期方法 - 但我想向你展示选择。请注意,您只能访问 Main 中的 operation.number1,因为 Main 方法属于同一类型 - 这应该为您敲响警钟。

关于c# - 无法将值分配给稍后要引用的函数内的整数 - 范围问题 - 我认为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35861037/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com