C# typeof() 和object.GetType() 、Type..GetType()使用和区别
进行学习到表达树了,用动Tpye了。所以整理了以下他们区别和用法
总得来说他们都是为了获取某个实例具体引用的数据类型System.Type。
1、GetType()方法继承自Object,所以C#中任何对象都具有GetType()方法,x.GetType(),其中x为变量名
2、typeof(x)中的x,必须是具体的类名、类型名称等,不可以是变量名称
3、System.Type.GetType(),有两个重载方法
比如有这样一个变量i:
Int32 i = new Int32();
使用GetType(),i.GetType()返回值是Int32的类型,但是无法使用typeof(i),因为i是一个变量,
使用typeof(),则只能:typeof(Int32),返回的同样是Int32的类型。
使用System.Type.GetType()得到Type引用
为了以更灵活的方式得到类型信息,我们可以调用System.Type类的静态成员GetType(),然后指定类型的完全限定名。采用这种方法,我们不需要得到正从中提取元数据的类型的编译时信息,
1)Type.GetType()方法被重载一:
允许我们指定两个布尔类型的参数,一个用来控制当类型找不到时是否抛出异常,另一个用来指示是否区分字符串大小写。
例如:
//使用静态的Type.GetType()方法获取类型信息(如果SportsCar没有找到,则忽略不抛出异常信息)
Type t = Type.GetType("CarLibrary.SportsCar",false,true);
2)Type.GetType()方法被重载二:
在上面的例子中,注意传入GetType()的字符串没有包含类型所在的程序集信息。在这种情况下,该类型便被认为是定义在当前执行的程序集中。但是,当希望得到一个外部私有程序集的类型元数据时,字符串参数必须使用类型完全限定名,加上类型所在的程序集的名字(每一个都用逗号隔开):
C# typeof() 和object.GetType() 、Type..GetType()使用和区别的更多相关文章
- c# 之 System.Type.GetType()与Object.GetType()与typeof比较
Object.GetType()与typeof的区别 //运算符,获得某一类型的 System.Type 对象. Type t = typeof(int); //方法,获取当前实例的类型. ; Con ...
- c# typeof 与 Type.GetType 使用与效率对比
static void ReflectionTest() {//测试两种反射的效率问题 //Type.GetType()只能在同一个程序集中使用,typeof则可以跨程序集(assembly) //通 ...
- mono的Type.GetType(string)总是为空
public partial class Index : System.Web.UI.Page { protected override void OnLoad(EventArgs e) { Resp ...
- Type.GetType()在跨程序集反射时返回null的解决方法
在开发中,经常会遇到这种情况,在程序集A.dll中需要反射程序集B.dll中的类型.如果使用稍有不慎,就会产生运行时错误.例如使用Type.GetType("BNameSpace.Class ...
- .net core中使用Type.GetType()从字符串获取类型遇到的问题
问题背景是想在 appsettings.json 中动态配置依赖注入,依赖注入代码如下: services.AddSingleton(typeof(ISmsService), Type.GetType ...
- Type.GetType反射的对象创建Activator.CreateInstance
/// <summary> /// 获取对应类的实现 /// </summary> /// <param name="libname">< ...
- Type.GetType(string.contains(','))
例如 Type type = Type.GetType("ACalCoreServiceLib.BaseService,ACalCoreServiceLib"); 里面的ACalC ...
- Type.GetType()反射另外项目中的类时返回null的解决方法
项目1:ProjectA namespace ProjectA { public class paa { .... } } Type.GetType("paa")返回null Ty ...
- Type.GetType(string)为空
Type type = Type.GetType(scheduleJob.JobType); 时type为空, 导致执行下一步时 MethodInfo method = type.GetMethod( ...
随机推荐
- centos下APUE 例程编译-解决报错与改写例子名字。
首先是编译生成libapue.a的库文件.按照readme的说法很简单改个目录make一下就好,但是在centos下还是有错.通过下面这篇博文<<UNIX环境高级编程中的apue.h错误& ...
- C++多线程之互斥锁和超时锁
#include<iostream> #include<thread> #include<mutex> using namespace std; mutex mu; ...
- IoC容器-Bean管理(bean生命周期)
1,生命周期 即从对象创建到对象销毁的过程 2,bean生命周期 (1)通过构造器创建bean实例(无参数构造) (2)为bean的属性设置值和对其他bean的引用(调用set方法) (3)调用bea ...
- One Switch
前言 One Switch 是由国内知名开发者 TualatriX 带来的最新作品,功能小巧精简,设计优雅,犹如一块多功能的遥控器,通过状态栏快捷菜单即可「一键」快速实现保持亮屏.切换 AirPods ...
- 2022年写的香橙派 OrangePi Zero 用python获取dht11温度和湿度
感谢网上资料和个人的不放弃,终于方便的解决了香橙派 OrangePi Zero用python获取dht11温湿度的问题. 网上关于香橙派的资料比起树莓派真是少之又少,现在香橙派zero能干的活暂时也只 ...
- python字符串系列--2
#!/usr/bin/python #coding=utf-8 first_name='tiger' last_name='gao' full_name= f"{first_name} {l ...
- eureka 集群的实现方式?
注意,本文还是对上一篇博客的延续,需要的配置,在前面的博客里面可以找到. eureka集群版 (正宗的eureka!) 2.1.配置eureka的集群之前首先先配置HOSTNAME和IP的映射 具体的 ...
- Github上点赞90k的计算机基础、操作系统、网络笔记,赶紧收藏
最近,有粉丝发消息给我,说想要好好学习计算机,但是找不到门路啊,所以小编打算给大家推荐一些很奈斯的计算机学习的资料,希望大家赶紧收藏起来好好学习. 资料分为四份,给大家展示了部分内容,头条受限,无法全 ...
- Windows10关闭自动更新操作系统
1:按下:win+r 2:输入services.msc,打开服务本地 3:停止windows update服务,并禁用,同时在恢复里,改为无操作.
- httpclient方式提交数据到服务器
get方式: //使用HttpClient请求服务器将用户密码发送服务器验证 try{ String path = "http://192.168.13.83:8080/xuexi/serv ...