所以我正在学习基本的C#,并想知道我如何从x
和y
返回AGE();
和NUMBER();
并在Name();
中使用这些变量
由于构造函数中没有局部变量,因此x
参数中的y
和Name();
是可以理解的错误。但是我从函数返回了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();
}
}
}
答案 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
代替并在必要时解析结果。GetAge
和GetName
将是更合适的函数名称Main
函数中,或者在Program
Main
调用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();
}
}
并未表明他们所代表的内容。所以这样的事情会更合适:
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
}