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) 方法,处理用户的远程桌面连接请求。
总之就是,注释掉上面#define,就会执行#else后面的语句,相当于可以用来跳过一部分代码(#if)的执行
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 没有源码,如何修改代码逻辑?
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
2023-01-31 express_javscript_webframe