c# - 无法在另一个方法中使用两种方法
问题描述
我在一个较大的方法中插入两种方法时遇到了麻烦。另一个论坛告诉我 c# 8 支持这一点,但即使是我的编译器的最新版本也只支持最高版本 5。有人知道如何提供帮助吗?我是初学者,将不胜感激。让我知道我是否可以提供更多信息。
该程序只是对基于文本的游戏的测试,玩家输入他们的名字然后他们开始收集硬币,我在每个结果结束时运行 coincheck() 以使其可重复,但余额变量会每次重置,我终于通过将这两种方法都放入 main 找到了可能的解决方法,但我的编译器似乎不喜欢那样。
using System;
// namespace declaration
namespace test {
// Class declaration
class Geeks {
// Main Method
static void Main()
{
int balance = 0;
static void namecheck()
{
Console.Clear();
Console.WriteLine("What is your name?");
string name;
name = Console.ReadLine();
Console.WriteLine("Hello {0}", name);
coincheck();
}
static void coincheck()
{
string coininp;
Console.WriteLine("Type 'collect' to pick up a coin and 'wallet' to check your wallet.");
coininp = Console.ReadLine();
if (coininp == "collect")
{
balance = balance + 1;
Console.WriteLine("you found a coin!");
coincheck();
}
if (coininp == "wallet")
{
Console.WriteLine("you have {0} coins in your wallet", balance);
coincheck();
}
else
{
Console.WriteLine("Invalid Input");
coincheck();
}
}
}
}
}
解决方案
仅 C# 版本 7 或更高版本支持本地函数。这在早期版本中根本是不可能的。
最接近的方法是使用匿名方法,允许存在于另一个方法中。例如:
void M1()
{
Action M2 = () => Console.WriteLine("M2");
// Now you can invoke the delegate representing your anonymous method
// as if it were a nested method:
M2();
}
这有时是合适的,通常出于相同的原因,本地函数是:隔离仅在本地上下文中严格有用的代码。但除了最简单的场景,我不推荐它。
在您的示例中,方法主体很大,我只是将这些方法作为类中的常规方法放在外面。如果您确实必须将它们作为本地函数,那么您需要升级到 C# 7 或更高版本。
推荐阅读
- ruby-on-rails - rails 中链方法的别名
- java - 从 uri 获取视频缩略图到 ImageView
- cmake - 在 CMake 中,CXX_FLAG、CXXFLAGS 和 CMAKE_CXX_FLAGS 有什么区别
- c# - 为什么调用部署到服务器的服务不返回问题详细信息对象?
- html - 的反面
- security - Jenkins Fortify - XXE 漏洞抑制过滤器
- shell - sh if-else 语句 newer 执行 else 语句
- pytorch - pytorch 的 cifar10 数据集在不同时间加载是否相同?
- recaptcha - 企业 reCaptcha 分数始终为 0。对于隐形 reCaptcha
- javascript - React 尝试将值映射到 SVG,以便动态呈现图标