反射和正则基础
一、反射
a)通过反射可以动态地创建对象、赋值或者调用方法。MVC、EF等各种框架都会用到反射,还有VS的智能感知、监视功能也利用了反射。
反射的基础类为Type,每个类对应一个Type对象,每个方法、属性分别对应MethodInfo和PropertyInfo对象,这些就是类、方法、属性的元数据(Meta Data)。
b) 获取一个类的Type对象有下面几种方法,可根据场景需要选择适合的方式:
var p1 = new Person();
//1 通过实例化后的对象获取
var t1 = p1.GetType();
//2 通过类直接获取
var t2 = typeof(Person);
//3 通过类所在的程序集获取
var t3 = Type.GetType(" _6._1_Reflect.Person");
c) Type类的方法很多,这儿学习GetMethod的基本使用,Person类的Hello方法有两个重载
class Person {
public void Hello() {
Console.WriteLine("Hello I'm **");
}
public void Hello(string s) {
Console.WriteLine(s);
}
}
Type t1 = typeof(Person);
CreateInstance用于创建类的实例
var obj = Activator.CreateInstance(t1);
GetMethod用于取得某个方法,要区分两个Hello重载,需要在第二个参数中传入签名信息以帮助识别,一个string参数时传入new Type[] { typeof(string)},无参时传入new Type[0]。
MethodInfo miHello = t1.GetMethod("Hello", new Type[0]);
miHello.Invoke(obj, new object[0]);
MethodInfo miHello1 = t1.GetMethod("Hello", new Type[] { typeof(string)});
miHello1.Invoke(obj, new object[] { "s" });
获取到方法后,使用Invoke方法来调用,同时可以传入参数。
二、正则
正则用于匹配字符串,正则相关的知识博大精深、用途广泛,先把匹配、校验字符串这样的用途学会吧。
正则的基本元字符有:
. 除了\n以外的任意的单个字符
[0-9] 0-9之间的任意一个数字
\d 数字
\D 非数字
\a 空白
\S 非空白
\w 小写字符和数字、汉字
\W 特殊符号
\ 对于.等特殊字符转义
() 提升优先级、提取组
| 或者
+ 出现1到无限次
* 出现0到无限次
? 出现0-1次
{1,2}一次或两次,{1,} 最少一次
^ 开始
$ 结束
先了解一点点,下篇继续学习正则。另外SQL中like语句除了常用的%外,还有_,%用于匹配任意多个字符,_则用于匹配一个字符。
学习资料:如鹏网.net提高班http://www.rupeng.com/News/10/4603.shtml
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具