是否可以在另一个函数中使用特定函数中的变量

Is it possible to use a variable from a specific function in another function

提问人:Doully 提问时间:10/21/2023 更新时间:10/21/2023 访问量:47

问:

基本上我想输入 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”在当前上下文中不存在 我确实理解此错误消息,但我不知道如何解决它

这段代码是从我的原始代码简化而来的,但本质上是做同样的事情(我的原始代码是不可读的)

我确信有一个超级简单的修复程序,但新手必须以某种方式学习,而我找不到任何我能理解的解决方案

对于任何感兴趣的人,我正在用 c# 制作一个数字猜谜游戏 我以前用python做过一个,但想学习c#

C# 函数 变量

评论


答:

2赞 Auditive 10/21/2023 #1

只需将该变量作为方法结果返回即可。如果您需要 2 个变量,您可以使用元组:

 private static (bool, int) Input()
 {
     //...
     bool isInt = int.TryParse(limitString, out limitInt);
     // ...
     return (isInt, limitInt);
 }

然后,在调用方法(在您的示例中)将结果也分配为元组:Main

 static void Main()
 {
    var (isInt, limitInt) = Input();
    if (isInt)
        // ...
    else
        // ...
 }

有关元组的更多信息,请参阅官方文档