当前位置: 首页 > news >正文

typeof()

C# 中的 typeof() 是啥?一句话讲清楚:

typeof() 就是“问编译器:这个类型长啥样?”

它不是运行时去查对象,而是编译时就确定你写的那个“类名、接口名、结构名”到底是谁,然后返回一个叫 Type 的对象,这个对象里装满了这个类型的“身份证信息”。


举个接地气的例子:

你写:

Type t = typeof(string);

翻译成人话就是:

“编译器大哥,帮我查一下 string 这个类型的信息,打包成一个‘类型身份证’给我,我叫它 t。”

这个 t 里有什么?比如:

  • 类型名字:"System.String"
  • 它是不是类?是不是数组?有没有构造函数?
  • 有哪些方法、属性、字段?
  • 它继承自谁?实现了哪些接口?

typeof() 有啥用?实际场景举例:

1️⃣ 反射(Reflection)—— 动态操作类型

你想在程序运行时,根据类型名动态创建对象、调用方法?

Type type = typeof(MyClass);
object obj = Activator.CreateInstance(type); // 动态创建实例

相当于:“我不写死 new MyClass(),而是让程序自己根据类型信息造对象!”

2️⃣ 泛型约束检查

public void DoSomething<T>()
{if (typeof(T) == typeof(string)){Console.WriteLine("传进来的是字符串!");}
}

“我这个泛型方法想知道,用户到底传了个啥类型进来?”

3️⃣ 日志、调试、框架底层

很多框架(比如 ASP.NET Core、EF Core)内部大量使用 typeof() 来获取类型元数据,做路由匹配、数据库映射等。

[ApiController]
[Route("[controller]")]
public class UserController : ControllerBase
{// 框架内部会用 typeof(UserController) 来注册路由
}

注意避坑:

  • typeof() 里面只能写类型名,不能写变量!

✅ 正确:

typeof(int)
typeof(List<string>)
typeof(MyClass)

❌ 错误:

string s = "hello";
typeof(s); // 编译报错!s 是变量,不是类型!
  • 如果你想获取某个对象的类型,用 GetType()
string s = "hello";
Type t = s.GetType(); // 运行时获取对象的实际类型

一句话总结区别:

typeof(类型名) → 编译时就知道 → 问的是“类型模板”
对象.GetType() → 运行时才知道 → 问的是“这个具体对象是谁”


通俗总结:

typeof() 就像你去派出所查一个人的“户口本信息”,你只需要提供“姓名”(类型名),就能拿到他的完整档案(Type对象)。
不管这个人有没有出生(对象有没有实例化),户口本早就存在了!

http://www.hskmm.com/?act=detail&tid=8865

相关文章:

  • 【未完成】2025.9 做题记录
  • 2025.8 做题记录
  • 关于 “Thinking Machines Lab首次发长文” 的一些知识的学习和补充
  • CF1630F 题解 | 网络流
  • 攻防世界-secret-galaxy-300 - xxx
  • 实用指南:LeetCode 面试经典 150_哈希表_单词规律(41_290_C++_简单)
  • 数据库
  • 代码随想录算法训练营第二天 | leetcode 209
  • mpv硬件解码
  • 2025.9.78——卷6-8选择
  • 关于pytorch的读书报告
  • Emacs 折腾日记(三十)——打造C++ IDE 续
  • 数据结构 项目一
  • 好烦
  • 用 Go 语言与 Tesseract OCR 识别英文数字验证码
  • FreeRTOS和LVGL组合使用教程
  • Codeforces 1646 记录
  • 综合与实现流程【p3】--(DSP-存储)优化PS系统集成
  • Linux中 sed命令忽略大小写匹配
  • 【STL库】哈希封装 unordered_map/unordered_set - 教程
  • Pip换源
  • 7zip压缩解压缩-测试CPU性能
  • 高数
  • P5666 [CSP-S2019] 树的重心
  • Java运行机制
  • 除自身以外数组的乘积-leetcode
  • 【2022】SDRZ夏令营游记
  • rapidXML解析xml文件
  • office2024免费永久激活版下载安装教程:含激活步骤 + 一键安装包下载
  • 大学不止GPA