近期在研究 C# 的表达式树,感觉部分场景下使用表达式树会很有优势,不知道表达式树是什么直接看官方文档吧
下面是我遇到的几种觉得可以使用表达式树的场景(具体情况具体分析,建议辩证的看待)
近期在研究 C# 的表达式树,感觉部分场景下使用表达式树会很有优势,不知道表达式树是什么直接看官方文档吧
下面是我遇到的几种觉得可以使用表达式树的场景(具体情况具体分析,建议辩证的看待)
第一场笔试,后面做的懒得记录了
之前遇到过一个需求是要在下拉框的目录做一个标记来指示状态,应该很自然就可以想到能不能修改一下 icon,比如把文件夹的那个icon改成其他颜色的,这样会比修改显示名字毫无疑问更加显眼。
不过其实想要进行更大限度的修改是完全可以的,只需要魔改一下 ValueDropdown 就行。
大部分的语言或多或少提供了一些元编程机制,使得开发者能够对现有的语法语义进行拓展,能够极大的提高编程体验和开发效率。可能一提到元编程,大家很容易想到大名鼎鼎的 Lisp
语言(你可能会说:“难道不是 Cpp?”,我又不会模板元编程,你让我讲啥 x)。得益于其本身接近语法树的语法,使得 Lisp 开发者可以很容易操作语法节点,甚至实现 “自己的 Lisp”,于是就才涌现了很多的 Lisp 方言。当然,本篇文章并不是为了讨论 Lisp,只是想要就 “元编程” 这一个角度,来谈谈 C# 和 Rust 语言各自的机制。
关于元编程是什么,简单来说是用程序编写程序
更详细的描述建议参考 wiki : https://zh.wikipedia.org/wiki/%E5%85%83%E7%BC%96%E7%A8%8B
之前我在知乎问过相关问题,后面参考了几个知友的回答,借鉴了一些项目,也算是基本解决了这个问题
也顺便附上我的知乎回答:https://www.zhihu.com/question/11672499668/answer/103930816515
以下是关于如何在 Unity 中使用更高版本的 C# 特性的详细解决办法(具有一定局限性)
之前偶然有些灵感,想着如果遇到了如下情景,需要此处的 object 只能是某种特定类型,比如实现了 ITestInterface
这个接口,那么大概会写成下面这样。
1 | public void Method(object obj) |
这样做自然没啥问题,但是只有到运行时才知道 obj 的类型到底符不符合要求,那么能不能把检查提前到编译期呢?也就是在编写代码的时候就能够很大程度避免使用不合要求的类型。
对于 C# 来说,其实可以写一个诊断分析器来实现。
以下使用 Unity 2022.3 对应的环境
ida pro7.7已经基本普及了,所以本篇文章是基于ida pro77和python3环境编写。
不可否认的是ida pro在静态分析上极为强大,不过动调方面还是比起其他工具稍显不足,而idapython提供了大量的ida的api,能一定程度上缓解动调的缺陷,这里就给大家简单介绍一下(
PS:参考了Q神的 http://www.qfrost.com/posts/ctf/idapython ,并且修正为了新版ida python的api