以编程方式取消注释代码

Posted

技术标签:

【中文标题】以编程方式取消注释代码【英文标题】:Uncomment code programmatically 【发布时间】:2013-07-23 03:06:24 【问题描述】:

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

void releaseA()

   //ToDo:

//string A = "Test";
releaseA();
textbox1.Text = A;

如何实现这一点并实现方法releaseA 注释掉//string A = "Test"; 我搜索了但仍然找不到任何东西。

【问题讨论】:

您希望您的代码能够在运行时修改自己的编译代码? 就像在当前执行的代码中一样?不会发生。代码在文本文件中吗?只需将其读入字符串或其他内容并替换 // 我……什么?我想对于您要实现的目标,您将存储一些布尔标志并检查它以确定您要使用的 A 的值。这是用于多平台编译吗?您可以使用#if directives 来检查编译目标吗? 您的评论实际上是在描述State Pattern。您不是“取消注释/注释代码”,而是切换状态。 if user check a checkbox then some comment, comment out and turn into code to do something 您所描述的是代码的条件执行,也称为 if 语句... 【参考方案1】:

我认为你真正想做的是:

string a = "";

if (condition)
    a = "Test";

textBox1.Text = a;

所以对于你的复选框和文本框的例子:

string text = "";

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

resultTextBox.Text = text;

【讨论】:

【参考方案2】:

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

你可以这样使用:

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

【讨论】:

【参考方案3】:

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

此外,一旦将其编译为字节码,您将无法知道所说的代码将在哪一行。

【讨论】:

【参考方案4】:

我不会在 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 而不是 #ifdef,因为 #ifdef 仍然是 true,因为“0”仍然是“已定义”,而 #if 是对值“0”/“1”的布尔测试' 分别为假/真。

【讨论】:

显然要在此示例中禁用 acme 小部件存储支持,您将在代码中的某处使用 runtime_acme_support = 0;

以上是关于以编程方式取消注释代码的主要内容,如果未能解决你的问题,请参考以下文章

在 Mathematica 7 中取消/注释掉代码的键盘快捷键?

在 Vim 中注释/取消注释 ruby​​ 代码块的最优雅的方式是啥?

Android以编程方式隐藏/取消隐藏应用程序图标

android studio怎么注释

如何以编程方式取消选择 Datatable 中的选定行

注释和取消注释代码的快捷键是啥?