![]() |
1
14
因为当你搜索你的字段时(就像在那个问题中)你使用字符串表示
达林建议的是静态类型:
你看到了吗?这很有趣,但不是C#4.0编译器的众所周知的特性:从lambda表达式自动构建表达式树并将其转换为
|
![]() |
2
5
正如上面所说的,问题是为什么表达式树比反射树更安全。 答案是他们是 二者都 使用反射。 编辑以澄清-MemberInfo.GetCustomAttributes是一个反射调用。 http://msdn.microsoft.com/en-us/library/system.reflection.memberinfo.getcustomattributes(VS.71).aspx |
![]() |
3
1
从我对.NET的有限知识来看,表达式树方法似乎可以进行类型检查。 |
![]() |
4
0
例如,如果我们在重命名属性时讨论类型安全性和代码破坏,那么表达式树“advantage”将被否定,因为我们有了新的C#特性,如nameof(): 表达式树方式(在nameof()之前更好):
名称中的GetProperty(在nameof()之前是错误的):
GetProperty中的字符串输入是不安全的,因为它被硬编码为“Id”,并且当您重命名Id属性时,如果您不记得替换这个字符串,您的代码将在运行时中断。 这使得表达式树更安全,因为您使用了属性的实际名称。 但是现在我们已经有了name of(),使用的字符串实际上是编译时属性的名称,如果您重命名该属性,并且您/您的IDE“忘记”在上面的代码片段中重命名它,那么代码将在编译时中断。 所以,在我看来,旧的“坏方法”更简洁,可能也表现得更好,因为你不需要额外的演员。 |
![]() |
Emopusta · 从后端到前端的图像路径不工作 2 年前 |
![]() |
Asdrubal Hernandez · Linq查询特定数组索引出错 2 年前 |
![]() |
Niyazi Babayev · 如何在表达式中动态应用表达式? 2 年前 |
|
Dansih · .Net核心自定义身份验证方案 2 年前 |
![]() |
lolorekkk · 面板插入。NET WinForm 2 年前 |