Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/unity3d/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#的System.in?_C#_Unity3d_Bufferedreader_Inputstreamreader - Fatal编程技术网

C#的System.in?

C#的System.in?,c#,unity3d,bufferedreader,inputstreamreader,C#,Unity3d,Bufferedreader,Inputstreamreader,我正在用一个C#文件在Unity3D中编写一个BufferedReader。当我使用这行代码时,它会说有一个错误:“Parser error:Identifier expected,”in“是一个关键字”,但当这段代码在Java中运行时,就没有错误。为什么System.in不存在于C#中?如何修复它 我的代码: BufferedReader inFromUser = new BufferedReader(new InputStreamReader(System.in)); System.in是

我正在用一个C#文件在Unity3D中编写一个BufferedReader。当我使用这行代码时,它会说有一个错误:“Parser error:Identifier expected,”in“是一个关键字”,但当这段代码在Java中运行时,就没有错误。为什么System.in不存在于C#中?如何修复它

我的代码:

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

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

对于C#你必须使用。这是一个很好的例子。在C#(支持所有调用)中没有真正等价的
BufferedReader
。但是
TextReader
具有和方法,其行为似乎或多或少相同。因此,您应将其替换为:

TextReader tr = Console.In;
//use TextReader as inFromUser
正如@BlasSoriano所说,这旨在找到与
BufferedReader
相当的行为


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

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

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

这看起来像java,而不是C中的C,它是
System.Console.In
。还有一种方法,;但不确定这是否适用于您正在尝试的操作。在C中,等价物是
Console.In
,但也没有
BufferedReader
InputStreamReader
。C#和Java是不同的语言。我不知道你为什么希望一个系统的代码在另一个系统中编译。因为
System.in
是Java而不是C。您可以通过不尝试在C代码中使用System.in和不尝试在C编译器中编译Java代码来修复它。也许您可以找到这个问题的有用答案:发布的代码不是C代码(C没有
BufferedReader
)。因此,将代码更改为使用
Console.In
不会修复任何问题;你不能假装Java代码是C代码。这个问题仅仅是基于一种误解,即Java文件是C代码。你的答案并不相关(或正确)。@KenWhite:这就是错误所在。我认为OP只是从其他地方复制了代码。这个答案在C#中提供了一个(近似的)选择。我不会假装这是C代码。我说这是一个(近似的)等价物(只是为了澄清,我并没有否决这个答案)。错误在于海报在试图用错误的语言编译代码时犯了一个可怕的错误。简单地纠正这一行代码并不能解决或纠正根本问题,即海报不理解他们正在复制/粘贴的代码,以至于知道它是错误的语言。@KenWhite:我当然不知道细节。但我同意这不是实现应用程序的方法。我在答案中添加了一条注释(希望)反映了您的评论?