以编程方式取消注释代码

时间:2013-07-23 20:30:45

标签: c# comments

如何以编程方式评论某些评论? 想想这样的事情: -

void releaseA()
{
   //ToDo:
}
//string A = "Test";
releaseA();
textbox1.Text = A;

我如何实现这一点并实施方法releaseA来评论//string A = "Test"; 我搜索但仍然找不到任何东西。

4 个答案:

答案 0 :(得分:2)

我认为你真正想做的是:

string a = "";

if (condition)
    a = "Test";

textBox1.Text = a;

因此,对于复选框和文本框的示例:

string text = "";

if (checkBox.Checked)
    text = inputTextBox.Text;

resultTextBox.Text = text;

答案 1 :(得分:1)

如果要在构建指定文件之前注释代码,可以使用编译器开关,并在VS或MSBuild中构建文件时指定编译器开关。

您可以使用以下内容:

#ifdef _DEBUG
//string A = "Test";
#else
string A = "Test";
#endif

答案 2 :(得分:0)

我认为编译器会忽略注释,并且不会驻留在整个exe中。因此,鉴于您当前的代码,这在技术上是不可能的。

此外,一旦编译成字节码,你就没有参考代码所在的“行”。

答案 3 :(得分:0)

我不用c#编码,而是在c&目标C,所以我相信这种方法是可移植的。

如果我有一个功能,我希望能够在编译时有条件地启用,并可能在运行时禁用它(不是相反!),我使用以下方法。

在所有相关文件将看到的全局(前缀)标题(或命令行开关)中,定义一个强制编译器物理包含该功能的常量代码到可执行文件中。这实际上是一个博尔常数。

#define acme_support        1

在一个公共头文件中(例如settings.h)定义一个包装器,它告诉运行时 代码,如果该功能可用。如果它不可用,它是硬编码的。如果它可用,它是一个外部布尔。

#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

然后在整个项目中要包含该功能的代码:

#if acme_support

    if (runtime_acme_support) {

        /*  process the acme widgets for the acme store. */

    }

#endif

正如您所看到的,#if / #endif可防止在编译时未包含禁用的代码,但如果某些条件需要,您仍可在运行时“禁用”该功能(例如,不存在所需的硬件)

请注意,#if不是#ifdef,因为{0}仍然是“已定义”,因此#ifdef仍为真,而#if是布尔测试值'0'/'1'分别为false / true。