c# - 属性参数中的 Lambda

标签 c# .net attributes lambda

为什么我们不能添加 lambda 作为属性参数?例如我想这样做:

[MyAttribut(Transform= {object => object.ToSomethingElse()})]

我应该理解 C# 中的 lambda 只是闭包吗?

编辑:通过查看所有答案,让我确定一件大多数人似乎不知道的事情: 除非是闭包,否则 Lambda 是一个编译时结构。

最佳答案

属性的参数需要是编译时常量。

来自 MSDN - Attribute Parameter Types :

Values passed to attributes must be known to the compiler at compile time.

它们也仅限于这些类型:

  • bool
  • 字符,无符号字符
  • 短,无符号短
  • 整数,无符号整数
  • long, unsigned long
  • __int64,无符号 __int64
  • float ,双
  • wchar_t
  • char* 或 wchar_t* 或 System::String*
  • 系统::类型^
  • 系统::对象^
  • 枚举

关于c# - 属性参数中的 Lambda,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10951378/

相关文章:

c# - 我可以通过加法来增加 c# 字符的值吗?

.net - 我可以在不重新编译的情况下将程序集转换为强命名程序集吗?

video - Safari <input type ="file"accept ="video/*"> 忽略 mp4 文件

c# - 什么是替代属性?

Python - 通过模块属性(按字符串名称)访问类实例

c# - .NET 中包含单个整数属性的简单类的大小

c# - 将其装饰函数的功能包装在一些外部代码中的属性

c# - 如何使用现有站点的管理面板创建新的子域网站

c# - WCF 和 SSL 相互身份验证 403 - 禁止 : Access is denied

.net - 用 VC++ 开发的程序何时需要在目标计算机上安装 .NET Framework,何时需要 MS VC++ Redistributable Package?