C# 是否可以在另一个函数中使用特定函数中的变量
问题描述
基本上,我想要输入limitInput,并在尝试解析后在另一个函数中使用bool isInt和limitInputInt。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.CompilerServices;
using System.Text;
using System.Threading.Tasks;
namespace Test
{
internal class Program
{
static void Input()
{
Console.WriteLine("Integer X?");
var limitString = Console.ReadLine();
int limitInt;
bool isInt = int.TryParse(limitString, out limitInt);
Console.WriteLine(isInt);
}
static void Main(string[] args)
{
Input();
if (isInt = true)
{
Console.WriteLine(limitInt);
}
else if(isInt = false)
{
Console.WriteLine("this is not an integer");
}
}
}
}
我想输入一个数字作为变量limitString,尝试解析它,然后在另一个函数中使用limitInt和isInt。
每当我运行这个程序时,我得到CS0103错误,当前上下文中不存在’isInt’这个名称。我理解这个错误消息,但不知道如何解决。
这段代码是从我的原始代码简化而来,但本质上做的是相同的事情(我的原始代码已经超出可读性)。
我确定有一个超级简单的解决方法,但新手总要有所学习,而我找不到任何我能理解的解决方案。
解决方案
只需将这些变量作为方法结果返回即可。如果您需要两个变量,可以使用元组。
private static (bool, int) Input()
{
//...
bool isInt = int.TryParse(limitString, out limitInt);
// ...
return (isInt, limitInt);
}
然后,在你的调用方法中(例如,你的示例中的 Main)将 result 也赋值为元组:
static void Main()
{
var (isInt, limitInt) = Input();
if (isInt)
// ...
else
// ...
}
更多关于元组的信息可以在官方文档中找到。