【发布时间】:2012-10-21 00:50:58
【问题描述】:
在 C++ 中有预定义的宏,例如 __FUNCTION__,它编译为使用宏的函数名的字符串字面量。
void MyFunc()
{
printf("I'm in %s!", __FUNCTION__); // I'm in MyFunc!
}
C# 有类似的东西吗?我希望为 asp.net 网络表单执行此操作:
public string MyProperty
{
get { return (string)ViewState[__PROPERTY__]; }
set { ViewState[__PROPERTY__] = value; }
}
显然这不起作用(否则我不会问这个问题),我想知道 C# 中是否有类似的东西不使用反射或与使用字符串文字 @987654324 相比有任何负面的性能影响@。
这有望减少我的拼写错误,但我可以想到其他一些有用的例子。
【问题讨论】:
-
根据我使用 C# 的经验,您可以使用 #if debug #endif 等宏。但是,您不能拥有包含任何内容的编译时宏。
-
__FUNCTION__用于编译为字符串文字(我认为是在 gcc 2.96 中),但已经很多年没有了。变化有点痛苦。
标签: c# asp.net webforms c-preprocessor