跳到主要内容

C# 基本输入和输出

提示
  1. C# 输出方法:C# 中使用 System.Console.WriteLine()System.Console.Write() 进行输出,其中 WriteLine 会在输出后换行,而 Write 只输出文本。
  2. 变量和字符串的打印:可以通过 + 运算符或格式化字符串在 WriteLine()Write() 方法中打印变量和连接字符串。
  3. C# 输入方法Console.ReadLine() 读取整行字符串,Console.Read() 读取一个字符的 ASCII 值,Console.ReadKey() 捕获并显示按键,用于从用户获取输入。

C# 输出

要在 C# 中进行输出,我们可以使用

System.Console.WriteLine()
System.Console.Write()

这里,System 是一个 命名空间Console 是命名空间 System 内的一个类,而 WriteLineWrite 是类 Console 的方法。

让我们看一个简单的例子,它将一个字符串打印到输出屏幕。

示例 1:使用 WriteLine() 打印字符串

using System;

namespace Sample
{
class Test
{
public static void Main(string[] args)
{
Console.WriteLine("C# 很酷");
}
}
}

当我们运行程序时,输出将是

C# 很酷

WriteLine() 与 Write() 方法的区别

WriteLine()Write() 的主要区别在于 Write() 方法只打印给定的字符串,而 WriteLine() 方法打印字符串并移动到下一行的开始。

让我们看一个例子来理解这些方法之间的区别。

示例 2:如何使用 WriteLine() 和 Write() 方法?

using System;

namespace Sample
{
class Test
{
public static void Main(string[] args)
{
Console.WriteLine("打印在");
Console.WriteLine("新的一行");

Console.Write("打印在");
Console.Write("同一行");
}
}
}

当我们运行程序时,输出将是

打印在
新的一行
打印在同一行

使用 WriteLine() 和 Write() 打印变量和字面量

WriteLine()Write() 方法可以用来打印变量和字面量。这是一个例子。

示例 3:打印变量和字面量

using System;

namespace Sample
{
class Test
{
public static void Main(string[] args)
{
int value = 10;

// 变量
Console.WriteLine(value);
// 字面量
Console.WriteLine(50.05);
}
}
}

当我们运行程序时,输出将是

10
50.05

使用 + 运算符合并(连接)两个字符串并打印

字符串可以使用 + 运算符在打印时进行合并/连接。

示例 4:使用 + 运算符打印连接的字符串

using System;

namespace Sample
{
class Test
{
public static void Main(string[] args)
{
int val = 55;
Console.WriteLine("Hello " + "World");
Console.WriteLine("Value = " + val);
}
}
}

当我们运行程序时,输出将是

Hello World
Value = 55

使用格式化字符串打印连接的字符串 [更好的替代方法]

打印连接字符串的更好替代方法是使用格式化字符串。格式化字符串允许程序员为变量使用占位符。例如,

以下行,

Console.WriteLine("Value = " + val);

可以替换为,

Console.WriteLine("Value = {0}", val);

{0} 是变量 val 的占位符,它将被 val 的值所替换。由于只使用了一个变量,因此只有一个占位符。

可以在格式化字符串中使用多个变量。我们将在下面的示例中看到。

示例 5:使用字符串格式化打印连接的字符串

using System;

namespace Sample
{
class Test
{
public static void Main(string[] args)
{
int firstNumber = 5, secondNumber = 10, result;
result = firstNumber + secondNumber;
Console.WriteLine("{0} + {1} = {2}", firstNumber, secondNumber, result);
}
}
}

当我们运行程序时,输出将是

5 + 10 = 15

这里,{0}firstNumber 替换,{1}secondNumber 替换,{2}result 替换。这种打印输出的方法比使用 + 运算符更具可读性且不易出错。

要了解更多关于字符串格式化的信息,请访问 C# 字符串格式化

C# 输入

在 C# 中,从用户获取输入的最简单方法是使用 Console 类的 ReadLine() 方法。但是,Read()ReadKey() 也可用于从用户获取输入。它们也包含在 Console 类中。

示例 6:从用户获取字符串输入

using System;

namespace Sample
{
class Test
{
public static void Main(string[] args)
{
string testString;
Console.Write("请输入一个字符串 - ");
testString = Console.ReadLine();
Console.WriteLine("您输入的是 '{0}'", testString);
}
}
}

当我们运行程序时,输出将是:

输入一个字符串 - Hello World
你输入的是 'Hello World'

ReadLine()、Read() 和 ReadKey() 方法的区别:

ReadLine()Read()ReadKey() 方法之间的区别是:

  • ReadLine()ReadLine() 方法从标准输入流读取下一行输入。它返回相同的字符串。
  • Read()Read() 方法从标准输入流读取下一个字符。它返回字符的 ASCII 值。
  • ReadKey()ReadKey() 方法获取用户按下的下一个键。这个方法通常用于保持屏幕,直到用户按下一个键。

如果你想了解更多关于这些方法的信息,这里有一个 StackOverflow 上有趣的讨论:Console.Read() 和 Console.ReadLine() 有什么区别?

示例 7:Read() 和 ReadKey() 方法的区别

using System;

namespace Sample
{
class Test
{
public static void Main(string[] args)
{
int userInput;

Console.WriteLine("按任意键继续...");
Console.ReadKey();
Console.WriteLine();

Console.Write("使用 Read() 输入 - ");
userInput = Console.Read();
Console.WriteLine("Ascii 值 = {0}",userInput);
}
}
}

当我们运行程序时,输出将是

按任意键继续...
x
使用 Read() 输入 - 学习 C#
Ascii 值 = 76

从这个示例中,应该很清楚地了解 ReadKey()Read() 方法的工作方式。在使用 ReadKey() 时,一旦按下键,它就会显示在屏幕上。

当使用 Read() 时,它接收一整行输入,但只返回第一个字符的 ASCII 值。因此,打印了 76L 的 ASCII 值)。

读取数值(整数和浮点类型)

在 C# 中读取字符或字符串非常简单。你所需要做的就是根据需要调用相应的方法。

但是,在 C# 中读取数值可能稍微有些棘手。我们仍然使用用于获取字符串值的相同 ReadLine() 方法。但由于 ReadLine() 方法将输入作为字符串接收,因此需要将其转换为整数或浮点类型。

一种简单的转换输入的方法是使用 Convert 类的方法。

示例 8:使用 Convert 类从用户读取数值

using System;

namespace UserInput
{
class MyClass
{
public static void Main(string[] args)
{
string userInput;
int intVal;
double doubleVal;

Console.Write("输入一个整数值:");
userInput = Console.ReadLine();
/* 转换为整数类型 */
intVal = Convert.ToInt32(userInput);
Console.WriteLine("你输入的是 {0}",intVal);

Console.Write("输入一个双精度值:");
userInput = Console.ReadLine();
/* 转换为双精度类型 */
doubleVal = Convert.ToDouble(userInput);
Console.WriteLine("你输入的是 {0}",doubleVal);
}
}
}

当我们运行程序时,输出将是

输入一个整数值:101
你输入的是 101
输入一个双精度值:59.412
你输入的是 59.412

Convert 类的 ToInt32()ToDouble() 方法分别将字符串输入转换为整数和双精度类型。类似地,我们可以将输入转换为其他类型。这里是 Convert 类可用方法的完整列表

还有其他方法可以从用户获取数值输入。要了解更多,请访问 从用户输入读取一个整数