相关疑难解决方法(0)

C#中myCustomer.GetType()和typeof(Customer)有什么区别?

我已经看到我在维护的一些代码中完成了两个,但不知道区别.有吗?

让我补充一点,myCustomer是Customer的一个实例

.net c#

73
推荐指数
5
解决办法
3万
查看次数

何时何地使用GetType()或typeof()?

为什么会这样

if (mycontrol.GetType() == typeof(TextBox))
{} 
Run Code Online (Sandbox Code Playgroud)

这不是吗?

Type tp = typeof(mycontrol);
Run Code Online (Sandbox Code Playgroud)

但这很有效

Type tp = mycontrol.GetType();
Run Code Online (Sandbox Code Playgroud)

我自己使用is运算符来检查类型,但是当我使用typeof()和时,我的理解失败了GetType()

何时何地使用GetType()typeof()

.net c# types typeof gettype

60
推荐指数
4
解决办法
12万
查看次数

如何确定给定的Type(System.Type)是否继承自特定的基类(在.Net中)?

这可能是一个简单的答案,我只是遗漏了一些东西,但是这里...如果我有一个Type,(即一个实际的System.Type ......不是一个实例)我该如何判断它继承自另一个特定的基类型?

.net c# reflection inheritance

25
推荐指数
3
解决办法
7978
查看次数

c#检查确切类型

我想检查一个对象的类型.如果类型完全相同,我只想返回true.继承的类应该返回false.

例如:

class A {}
class B : A {}

B b = new B();

// The next line will return true, 
// but I am looking for an expression that returns false here
if(b is A) 
Run Code Online (Sandbox Code Playgroud)

c# types

24
推荐指数
3
解决办法
6382
查看次数

typeof(T)与Object.GetType()性能

是否有人意识到typeof(T) where T : struct例如与t.GetType() where t is a System.Object?之间的任何差异?
ILdasm显示typeof(T)使用System.Type::GetTypeFromHandle(RuntimeTypeHandle handle),而另一个只是简单System.Object::GetType().实现是[MethodImpl(MethodImplOptions.InternalCall)],因此方法在CLR中的本机代码中定义.所以,我只是想知道是否有人知道任何理由更喜欢一个而不是另一个?

编辑:让我澄清一点,我最感兴趣的是你选择哪个似乎没关系的情况 - 也就是说,是否存在性能差异或其他原因?谢谢!

.net c#

23
推荐指数
1
解决办法
3万
查看次数

typeof generic和casted类型

假设我们有通用方法:

public void GenericMethod<T>(T item)
{
    var typeOf = typeof(T);
    var getType = item.GetType();
}
Run Code Online (Sandbox Code Playgroud)

我们使用以下参数调用它:

GenericMethod(1)
GenericMethod((object) 1)
Run Code Online (Sandbox Code Playgroud)

结果是:

typeOf = System.Int32
getType = System.Int32
Run Code Online (Sandbox Code Playgroud)

typeOf = System.Object
getType = System.Int32
Run Code Online (Sandbox Code Playgroud)

有人可以解释为什么输入到对象的typeof整数返回System.Object,但.GetType()返回System.Int32?

c# generics

22
推荐指数
1
解决办法
735
查看次数

20
推荐指数
2
解决办法
8203
查看次数

哪个好用:Object.GetType()== typeof(Type)或Object是Type?

我想知道哪个语句在Performance Point of View中是否有用

Object.GetType() == typeof(Type)
Run Code Online (Sandbox Code Playgroud)

要么

Object is Type
Run Code Online (Sandbox Code Playgroud)

c# performance types

18
推荐指数
1
解决办法
7153
查看次数

"是"关键字和Equals方法的重写

关键字"是"文档说明:

is运算符仅考虑引用转换,装箱转换和拆箱转换.其他转换(例如用户定义的转化)不予考虑.

这在实践中意味着什么?用它来检查结构是否是某种类型是错误的吗?例如,

public struct Point2D
{
    public int X;
    public int Y;

    ...

    public override bool Equals(Object value)
    {
        if (value != null && value is Point2D)   // or if (value != null && GetType() == value.GetType())
        {
            Point2D right = (Point2D)value;
            return (X == right.X && Y == right.Y);
        }
        else return false;
    }

    ...
}
Run Code Online (Sandbox Code Playgroud)

.net c#

7
推荐指数
1
解决办法
176
查看次数

使用 typeof 作为泛型类型参数

根据typeof的文档:

[...] 要获取表达式的运行时类型,可以使用 .NET Framework 方法 GetType

因此,这意味着typeof必须是一个编译时表达式。

在关于泛型类型参数的文章中,指出:

[...] 这个特定类的类型参数可以是编译器识别的任何类型。

编译器识别的任何类型都是编译器推断的任何类型,即编译时已知的任何类型。

如果这是真的,那么为什么不允许以下语句?

int value = GenericMethod<typeof(int)>();
Run Code Online (Sandbox Code Playgroud)

.net c# generics typeof

6
推荐指数
1
解决办法
950
查看次数

标签 统计

c# ×10

.net ×7

typeof ×3

types ×3

generics ×2

gettype ×2

inheritance ×1

performance ×1

reflection ×1