在log4netconfigurationmanual的第一个例子中作者使用typeof(MyApp)获取包含类MyApp的类型。是否有理由不使用this.GetType(),性能方面?因为在我看来this.GetType()在复制到另一个类时更安全,不会出现潜在的复制粘贴错误。 最佳答案 typeof(Foo)是静态类型查找;本质上它发生在编译时,所以你只能得到明确命名的类型。GetType()是动态类型查找;它是一个在运行时调用的虚拟方法,即使您使用多态性也会为您提供准确的类型。所以它在理论上“更慢”,但是它给了你一些你不能从t
在log4netconfigurationmanual的第一个例子中作者使用typeof(MyApp)获取包含类MyApp的类型。是否有理由不使用this.GetType(),性能方面?因为在我看来this.GetType()在复制到另一个类时更安全,不会出现潜在的复制粘贴错误。 最佳答案 typeof(Foo)是静态类型查找;本质上它发生在编译时,所以你只能得到明确命名的类型。GetType()是动态类型查找;它是一个在运行时调用的虚拟方法,即使您使用多态性也会为您提供准确的类型。所以它在理论上“更慢”,但是它给了你一些你不能从t
两者之间的确切区别是什么?//WhencallingthismethodwithGetByType()publicboolGetByType(){//thisreturnstrue:returntypeof(T).Equals(typeof(MyClass));//thisreturnsfalse:returntypeof(T)isMyClass;} 最佳答案 您应该在实例上使用isAClass而不是比较类型:varmyInstance=newAClass();varisit=myInstanceisAClass;//trueis也
两者之间的确切区别是什么?//WhencallingthismethodwithGetByType()publicboolGetByType(){//thisreturnstrue:returntypeof(T).Equals(typeof(MyClass));//thisreturnsfalse:returntypeof(T)isMyClass;} 最佳答案 您应该在实例上使用isAClass而不是比较类型:varmyInstance=newAClass();varisit=myInstanceisAClass;//trueis也
所以我在XNA、C#4.0中创建一个游戏,我需要管理很多PowerUps(在代码中都是从类“PowerUp”继承的),并处理PowerUps的后端管理我当前有一个枚举PowerupEffectType,每个子类PowerUp都有一个值。最后,在代码中,我需要将PowerupEffectType转换为Powerup类型(属于Type类,通常使用typeof([classname])实现)。因为这是一个小组项目,我想尽可能地将PowerupEffectType的每个值与其对应的类Type结合起来,即:不只是期望我的其他程序员使用switch语句手动进行转换,并确保添加/expansions
所以我在XNA、C#4.0中创建一个游戏,我需要管理很多PowerUps(在代码中都是从类“PowerUp”继承的),并处理PowerUps的后端管理我当前有一个枚举PowerupEffectType,每个子类PowerUp都有一个值。最后,在代码中,我需要将PowerupEffectType转换为Powerup类型(属于Type类,通常使用typeof([classname])实现)。因为这是一个小组项目,我想尽可能地将PowerupEffectType的每个值与其对应的类Type结合起来,即:不只是期望我的其他程序员使用switch语句手动进行转换,并确保添加/expansions
最近发现PG的等待事件的名称发生了一些变化,因此需要重新对相关的知识图谱进行更新。我们的知识图谱中,把PG以及衍生的数据库产品中的等待事件是作为相同的一类知识梳理的,因此在梳理过程中,合并了PG及其衍生数据库产品的等待事件,包括了近期大热的Gaussdb。Gaussdb对PG的等待事件扩展了很多,不过因为缺少实际案例和文档,很多Gaussdb的等待事件的定义我们还没有厘清,有些能够通过openGauss的源码来做辅助分析,有些就只能根据字面意思去望文生义,其质量也就要打折扣了。对于PG的等待事件,因为从PG13开始,LWLOCK的很多等待事件名称发生了变化,因此在这个表格里会有重复的定义今天我
哪一段代码更快?if(objisClassA){}if(obj.GetType()==typeof(ClassA)){}编辑:我知道他们不做同样的事情。 最佳答案 如果他们不做同样的事情,哪个更快有关系吗?比较具有不同含义的语句的性能似乎不是一个好主意。is告诉您对象是否在其类型层次结构中的任何位置实现了ClassA。GetType()告诉您派生最多的类型。不是一回事。 关于c#-is和typeof哪个更快,我们在StackOverflow上找到一个类似的问题:
哪一段代码更快?if(objisClassA){}if(obj.GetType()==typeof(ClassA)){}编辑:我知道他们不做同样的事情。 最佳答案 如果他们不做同样的事情,哪个更快有关系吗?比较具有不同含义的语句的性能似乎不是一个好主意。is告诉您对象是否在其类型层次结构中的任何位置实现了ClassA。GetType()告诉您派生最多的类型。不是一回事。 关于c#-is和typeof哪个更快,我们在StackOverflow上找到一个类似的问题:
我见过很多人使用下面的代码:Typet=typeof(obj1);if(t==typeof(int))//Somecodehere但我知道你也可以这样做:if(obj1.GetType()==typeof(int))//Somecodehere或者这个:if(obj1isint)//Somecodehere就我个人而言,我觉得最后一个是最干净的,但是有什么我想念的吗?哪个最好用,还是个人喜好? 最佳答案 都是不同的。typeof采用类型名称(您在编译时指定)。GetType获取实例的运行时类型。is如果实例在继承树中,则返回true