RemoteDesktopConnection\src\Program.cs
#define debug
using System;
using System.Text.RegularExpressions;
namespace RDP
{
class Program
{
static void Main(string[] args)
{
var info = new LogInfo();
#if debug
Console.WriteLine("please enter ipAddress");
while (true)
{
info.Ipaddress = Console.ReadLine();
if (new Regex(RdpConstant.IpaddressPatten).IsMatch(info.Ipaddress))
{
break;
}
}
Console.WriteLine("please enter username");
info.Username = Console.ReadLine();
Console.WriteLine(info.Username);
Console.WriteLine("please enter password");
info.Password = Console.ReadLine();
#else
info.Ipaddress = "120";
info.Username = "Adm";
info.Password = "wu";
#endif
RdpHandler.Rrocess(info);
}
}
}
- # 号开头的代码叫做预处理器指令,它们是编译器的命令,影响编译过程。这些命令指定了哪些代码段要编译或者如何处理特定的错误和警告。C# 预处理器指令以 # (井号) 符号开始,每个预处理器指令只占一行。预处理器指令不需要分号结束,而是用换行符结束。
您的代码中使用了以下几种预处理器指令:
-
define: 用于定义一个符号,例如 #define debug 定义了一个名为 debug 的符号。定义的符号可以用于 #if 指令中的条件编译,如果符号被定义了,那么 #if 指令中的表达式就为真。
-
if: 用于测试一个预处理器表达式是否为真,例如 #if debug 测试 debug 符号是否被定义。#if 指令后面必须跟着一个 #endif 指令。#if 指令中的代码只有在表达式为真时才会被编译。
-
else: 用于和 #if 指令配合,创建复合条件指令,例如 #if debug ... #else ... #endif。#else 指令中的代码只有在 #if 指令中的表达式为假时才会被编译。
-
endif: 用于和 #if 指令配合,表示条件指令的结束,例如 #if debug ... #endif。
您的代码中的预处理器指令的作用是:
- 如果定义了 debug 符号,那么程序会从控制台读取用户输入的 IP 地址、用户名和密码,并用正则表达式验证 IP 地址的格式是否正确。
- 如果没有定义 debug 符号,那么程序会使用固定的 IP 地址、用户名和密码。
- 然后程序会调用 RdpHandler.Rrocess(info) 方法,处理用户的远程桌面连接请求。
标签:info,Console,endif,指令,处理器,csharp,debug From: https://www.cnblogs.com/zhuoss/p/17999926总之就是,注释掉上面#define,就会执行#else后面的语句,相当于可以用来跳过一部分代码(#if)的执行