如何以编程方式注释掉一些评论?想想这样的事情:-
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
我不在 c# 中编写代码,但在 c 和 Objective 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
不是 a #ifdef
,#ifdef
因为 '0' 仍然是“已定义”,所以仍然是 true,而是#if
对值 '0' / '1' 的布尔测试,分别为 false/true。
我相信编译器会忽略注释,并且不会驻留在整个 exe 中。因此,鉴于您当前的代码,这在技术上是不可能的。
此外,一旦将其编译为字节码,您就不会提及该代码将在哪个“行”上运行。