Console.ReadLine和Console.In.ReadLine之间的区别

RBT*_*RBT 3 .net c# console console.readline

我遇到了这两个API,用于在C#中的简单控制台应用程序中读取用户的输入:

  • System.Console.ReadLine()
  • System.Console.In.ReadLine()

这是一个小代码片段,我试图利用这两个:

namespace StackOverflow
{
    class Program
    {
        static void Main(string[] args)
        {
            var input1 = System.Console.ReadLine();
            var input2 = System.Console.In.ReadLine();
         }
    }
}
Run Code Online (Sandbox Code Playgroud)

当我运行这个程序时,两行代码完全相同,即我在控制台上输入的任何字符串都会返回,直到我点击返回键.一个快速的谷歌搜索只提取了一个区分Console.Read和Console.ReadLine API的链接.任何人都可以帮助我理解这两个单独的API做同样事情的意义,即接收用户输入吗?

Xel*_*ela 7

System.Console.ReadLine()
Run Code Online (Sandbox Code Playgroud)

是别名

System.Console.In.ReadLine()
Run Code Online (Sandbox Code Playgroud)

所以他们完全一样.

以下是Microsoft参考源中的ReadLine代码.

[HostProtection(UI=true)]
[MethodImplAttribute(MethodImplOptions.NoInlining)]
public static String ReadLine()
{
    return In.ReadLine();
}
Run Code Online (Sandbox Code Playgroud)

如您所见,Console.ReadLine()只调用Console.In.ReadLine().

http://referencesource.microsoft.com/#mscorlib/system/console.cs,bc8fd98a32c60ffd