惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

V
Vulnerabilities – Threatpost
AI
AI
D
Darknet – Hacking Tools, Hacker News & Cyber Security
L
LINUX DO - 热门话题
G
GRAHAM CLULEY
Cisco Talos Blog
Cisco Talos Blog
T
Tenable Blog
L
Lohrmann on Cybersecurity
Know Your Adversary
Know Your Adversary
A
Arctic Wolf
T
Threatpost
AWS News Blog
AWS News Blog
S
Securelist
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
J
Java Code Geeks
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
The GitHub Blog
The GitHub Blog
H
Hackread – Cybersecurity News, Data Breaches, AI and More
C
Cisco Blogs
F
Full Disclosure
Jina AI
Jina AI
Engineering at Meta
Engineering at Meta
I
InfoQ
C
CXSECURITY Database RSS Feed - CXSecurity.com
I
Intezer
C
CERT Recently Published Vulnerability Notes
Last Week in AI
Last Week in AI
P
Privacy International News Feed
Scott Helme
Scott Helme
WordPress大学
WordPress大学
Simon Willison's Weblog
Simon Willison's Weblog
D
Docker
T
Threat Research - Cisco Blogs
P
Proofpoint News Feed
C
Cyber Attacks, Cyber Crime and Cyber Security
Y
Y Combinator Blog
T
Tor Project blog
V
Visual Studio Blog
Spread Privacy
Spread Privacy
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
Google DeepMind News
Google DeepMind News
B
Blog RSS Feed
Google Online Security Blog
Google Online Security Blog
C
Check Point Blog
爱范儿
爱范儿
N
News and Events Feed by Topic
博客园 - 【当耐特】
TaoSecurity Blog
TaoSecurity Blog
Recent Commits to openclaw:main
Recent Commits to openclaw:main

博客园 - skylai

mvc3 小技巧 WCF学习之旅(一)---Hello World. WCF Client configuration Jquery表单验证 Jquery的一些常用信息 二进制、SOAP的序列化及反序列化 简单的Attribute实现. 泛型之泛型约束 C#泛型之泛型委托 C#2.0泛型介绍之简单泛型类。 序列化之XML序列化(一) Vs2005的win form动态生成菜单 强制字符换行CSS版和C#版 js操作xml 读写XML文件 js的一些杂谈 一个button同时执行多个有返回值的函数的解决方法(return false; or return true;) DataGrid里应用radio单选按钮 限制字符输入(ASCII 码)
前两天刚看书看到的,来这里跟大家分享一下有关C#处理指令的问题
skylai · 2005-01-21 · via 博客园 - skylai

前两天刚看书看到的,来这里跟大家分享一下,

这些东东就是C# 预处理器的指令了,在我们编译的时候会很有用处.
在处理之前要先定义的一个符号,可以在后面根据条件进行编译,
#define
这便是定义指令.必须在文件的开始处定义才行,不然是产生编译错误
如下定义

在定义以后我们就要来进行条件设置了,不然就达不到效果,呵呵,
注意: #define 定义的符号在后面的条件计算是为 true
如:


这样的结果是:Hello World first!在这里我们用到了#else这个跟条件语句里的else上一样的.
因为在开始的时候我们定义了first这个符号.从上面可以看出first是作为布尔变量来计算的.
现在我们将这段代码变换一下


这里看到的效果是:Hello World Yes all!
上面用到了#elif这相当于条件语句里的 else if
接下来我们看看#undef

现在看到的结果是:Hello World No all!
为什么,呵呵.是因为我们写了#undef取消了对Debug的定义,也就是说Debug已经不起作用了,
接下来该#warning上场了,故名思义,就是在编译的时候产生警告信息.


 

可以看到有Hello Word!
在下面的信息框里可以看到警告信息,编译是已经通过了,
下面继续看其它的指令:#error这是一个产生错误信息的指令如下

这里就看不到输入的字符了,不过可以在消息框里看到下面的信息

现在来看看#line指令


这样可以看到消息框有台下信息

#line的功能就显而易见了,他就是将默认的行号改成自己定义的行号.#line后面跟default则是将现在的行号恢复至原来的行号
但是它还有一个功能就是可以隐藏某行代码,这是SDK里对它的解释

下面的示例说明调试器如何忽略代码中的隐藏行。运行此示例时,它将显示三行文本。但是,当设置如示例所示的断点并按 F10 键逐句通过代码时,您将看到调试器忽略了隐藏行。另请注意,即使在隐藏行上设置断点,调试器仍会忽略它。]


这段代码在运行后虽然可以看到有三行输入,但是在调试的时候可以发现第二行根本就没有被调试到.
还有最后两个指令了,
#region
#endregion
这两个我想大家都非常熟悉了吧

现在看到的结果是:Hello World No all! 为什么,呵呵.是因为我们写了#undef取消了对Debug的定义,也就是说Debug已经不起作用了, 接下来该#warning上场了,故名思义,就是在编译的时候产生警告信息.   可以看到有Hello Word! 在下面的信息框里可以看到警告信息,编译是已经通过了, 下面继续看其它的指令:#error这是一个产生错误信息的指令如下
现在看到的结果是:Hello World No all! 为什么,呵呵.是因为我们写了#undef取消了对Debug的定义,也就是说Debug已经不起作用了, 接下来该#warning上场了,故名思义,就是在编译的时候产生警告信息.   可以看到有Hello Word! 在下面的信息框里可以看到警告信息,编译是已经通过了, 下面继续看其它的指令:#error这是一个产生错误信息的指令如下