以编程方式取消注释代码
如何以编程方式注释掉一些评论? 想想这样的事情: –
void releaseA() { //ToDo: } //string A = "Test"; releaseA(); textbox1.Text = A;
我怎样才能实现这一点并实现方法releaseA
来注释掉//string A = "Test";
我搜索但仍然找不到任何东西。
我想你真正想做的是:
string a = ""; if (condition) a = "Test"; textBox1.Text = a;
因此,对于复选框和文本框的示例:
string text = ""; if (checkBox.Checked) text = inputTextBox.Text; resultTextBox.Text = text;
如果要在构建指定文件之前注释代码,可以使用编译器开关,并在VS或MSBuild中构建文件时指定编译器开关。
你可以使用这样的东西:
#ifdef _DEBUG //string A = "Test"; #else string A = "Test"; #endif
我相信编译器会忽略注释,并且不会驻留在整个exe中。 因此,鉴于您当前的代码,这在技术上是不可能的。
此外,一旦编译成字节码,你就没有参考代码所在的“行”。
我不用c#编写代码,但是在c&Objective C中做了一些,所以我确信这种方法是可移植的。
如果我有一个function,我希望能够在编译时有条件地启用,并可能在运行时禁用它(不是相反!),我使用以下方法。
在所有相关文件将看到的全局(前缀)标头 (或命令行开关)中,定义一个常量,强制编译器将该function的代码物理地包含在可执行文件中。 这实际上是一个博尔常数。
#define acme_support 1
在一个公共头文件 (例如settings.h)中定义一个包装器,它告诉运行时代码该function是否可用。 如果它不可用,它是硬编码的。 如果它可用,它是一个外部布尔。
#if acme_support extern bool runtime_acme_support; #else #define runtime_acme_support 0 #endif
在与“settings.h”相关联的实现文件中(我们称之为“settings.c”):
#if acme_support bool runtime_acme_support = 1; #endif
然后在整个项目中要包含该function的代码:
#if acme_support if (runtime_acme_support) { /* process the acme widgets for the acme store. */ } #endif
如您所见, #if
/ #endif
可防止在编译时未包含禁用的代码,但如果某些条件需要(例如,不存在所需的硬件),您仍可在运行时“禁用”该function
请注意, #if
不是#ifdef
,因为#ifdef
仍然是“0”仍然是“已定义”,而#if
是值’0’/’1’的布尔测试,分别为false / true 。