【问题标题】:System.in for C#?用于 C# 的 System.in?
【发布时间】:2015-05-31 00:57:42
【问题描述】:

我正在使用 C# 文件在 Unity3D 中编写 BufferedReader。当我使用这行代码时,它说有一个错误: "Parser Error:Identifier expected, "in" is a keyword" ,但是当这段代码在 Java 中运行时没有错误。为什么 C# 中不存在 System.in,我该如何解决?

我的代码:

BufferedReader inFromUser = new BufferedReader(new InputStreamReader(System.in));

【问题讨论】:

  • 这看起来像 java,而不是 C#...
  • 在 C# 中是System.Console.In。还有一个Console.OpenStandardInput 方法;不确定这是否适用于您尝试做的事情。
  • 在 C# 中等价于 Console.In,但也没有 BufferedReaderInputStreamReader。 C# 和 Java 是不同的语言。我不知道为什么你会期望一个代码在另一个中编译。
  • 因为 System.in 是 Java 而不是 C#。您可以通过不尝试在 C# 代码中使用 System.in 并且不尝试在 C# 编译器中编译 Java 代码来修复它。
  • 也许你能找到对这个问题有用的答案:.NET equivalent of Java's BufferedReader

标签: c# unity3d bufferedreader inputstreamreader


【解决方案1】:

System.in 是 Java 标准库的一部分,它不是 .NET 标准库的一部分,因此无法编译。

对于 C#,您必须使用 Console.In。这是TextReader。 C# 中没有真正的 BufferedReader 等价物(支持所有调用)。但是TextReaderReadReadLine 方法,它们的行为似乎或多或少相同。因此,您应该将其替换为:

TextReader tr = Console.In;
//use TextReader as inFromUser

正如@BlasSoriano 所说,这个question 旨在找到BufferedReader 的行为等价物。

此外,正如@KenWhite 所说,在不了解基本思想的情况下简单地复制粘贴源代码是一个非常糟糕的主意。您认为这段代码是有效的 C# 代码这一事实并不是很有希望。

【讨论】:

  • 贴出的代码不是C#代码(C#没有BufferedReader)。因此,将代码更改为使用Console.In 不会解决任何问题;你不能假装 Java 代码是 C# 代码。发布的问题仅仅是基于 Java 文件是 C# 代码的误解。您的答案并不真正相关(或正确)。
  • @KenWhite:这就是错误。我认为 OP 只是从其他地方复制了代码。这个答案在 C# 中提供了一个(近似的)替代方案。我不假装这是 C# 代码。我说这是一个(近似的)等价物。
  • (为了清楚起见,我不会反对这个答案)。错误在于发布者在尝试用错误的语言编译代码时犯了一个可怕的错误。简单地更正那一行代码并不能解决或纠正根本问题,即发布者不理解他们复制/粘贴的代码,足以知道这是错误的语言。
  • @KenWhite:当然我不知道细节。但我同意这不是实现应用程序的方式。我在答案中添加了一条注释(希望)反映了您的 cmets?
【解决方案2】:

如果您使用的是 IKVM,那么它是:

BufferedReader inFromUser = new BufferedReader(new InputStreamReader(java.lang.System.@in));

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-10-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-11
    • 2015-04-25
    • 1970-01-01
    • 2012-01-02
    相关资源
    最近更新 更多