C#运行数字求和代码报错:'ConsoleInput'不存在于当前上下文的原因?
ConsoleInput不存在报错的出现场景
- C#官方基础类库没有内置
ConsoleInput类,这个类属于自定义封装类,当你当前项目没有包含这个类的实现、也没有引用包含该类的程序集时就会触发该报错,常见触发场景如下:- 复制了第三方教程/其他项目的代码,原代码依赖自定义的
ConsoleInput工具类,复制时没有同步引入该类的实现 - 混淆了其他编程语言的控制台输入类名,错把其他语言的输入类用到C#项目中
- 项目引用的第三方包被移除/版本变更,原来包含
ConsoleInput类的包不再被项目引用
- 复制了第三方教程/其他项目的代码,原代码依赖自定义的
解决方案
方案1:使用.NET内置输入方法替换(最简便)
直接用C#原生的Console.ReadLine()方法替换对应行即可,对于你当前计算数字各位和的需求完全适用,修改后的代码如下:
using System; namespace suma_cifrelor_unui_nr { class Program { static void Main(string[] args) { int n; int suma = 0; Console.Write("Introdu numarul "); Console.Write("\n"); // 替换原ConsoleInput调用为内置方法 n = int.Parse(Console.ReadLine()); while (n > 0) { suma = suma + n % 10; n = n / 10; } Console.Write("Suma cifrelor este =="); Console.Write(suma); } } }
如果需要兼容原方法「读到空白符就停止输入」的逻辑,也可以修改对应行代码为:n = int.Parse(Console.ReadLine().Split()[0]);
方案2:补全自定义ConsoleInput类实现
如果你需要保留原代码的调用方式,可以在项目中新增如下自定义类即可:
using System; using System.Text; public static class ConsoleInput { public static string ReadToWhiteSpace(bool trimWhitespace) { StringBuilder input = new StringBuilder(); int nextChar; while (!char.IsWhiteSpace((char)(nextChar = Console.Read()))) { input.Append((char)nextChar); } return trimWhitespace ? input.ToString().Trim() : input.ToString(); } }
内容的提问来源于stack exchange,提问作者Flavius Mihai
相关产品推荐
相关产品推荐

