在C#中创建宏

时间:2010-06-24 05:45:10

标签: c#-3.0

有没有办法在c#

中创建宏

例如:

string checkString =“'bob'=='bobthebuilder'”(这将是动态的)

if(@@ checkString)     // ......... 其他     //.........

由于

4 个答案:

答案 0 :(得分:1)

不,C#没有宏。您可以在委托中捕获您的逻辑并在多个位置应用该委托,可能......会有帮助吗?

如果您可以描述您尝试解决的问题,而不是您认为自己喜欢的解决方案,我们可能会提供更多帮助。

答案 1 :(得分:1)

这些天来,

T4似乎越来越受到.NET工作的青睐。这不是你要求的,但在某些情况下它可能是非常有益的(或者它可能只是暗示错误的路径)。

在大多数情况下,尤其是使用泛型,我不希望在C#(或Scala)中使用“模板”或“宏”。在上面的示例中,您只需使用:

bool sameStuff = "'bob' == 'bobthebuilder'";
...
if (sameStuff) {
  ...
}

更复杂的案例通常可以通过重构方法或使用匿名函数来处理。

此外,属性(虽然是一种完全不同的方法)完善了模板的许多“传统”用法。

答案 2 :(得分:1)

如上所述,不,但还有许多其他方法:

  • Conditional compilation通过#if
  • 通过T4或其他东西进行模板化(我们使用Ned Batchelder的端口(提及)Cog
  • 通过类似PostSharp
  • 之类的面向方面编程
  • 正如乔恩所说,有很多方法;最好准确描述你想做什么。

答案 3 :(得分:0)

简短回答:不。

答案很长:您可以在C / C ++编译器的预处理器周围编写一个包装器。

除#region / #endregion之外,大多数语法都会被接受。您可以在处理之前使用#pragma为前缀添加前缀,然后删除#pragma部分。