以编程方式取消注释代码

如何以编程方式注释掉一些评论? 想想这样的事情: –

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 。