Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/257.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 为什么可以';我做Class.GetMethod(),但我可以做这个。GetType().GetMethod()?_C# - Fatal编程技术网

C# 为什么可以';我做Class.GetMethod(),但我可以做这个。GetType().GetMethod()?

C# 为什么可以';我做Class.GetMethod(),但我可以做这个。GetType().GetMethod()?,c#,C#,为什么我不能做Class.GetMethod(string),但我可以做this.GetType().GetMethod(string) 我想做前一个,因为我已经知道我要搜索的类,所以看起来会快得多。是在类上声明的方法。。。你看的课上没有。(特别是,该类还可以有一个GetMethod方法,这会使事情变得非常混乱……) 你可以用 typeof(Class).GetMethod(...) 尽管如此,与其获取特定实例的类型,还不如说这就是您想要的 编辑:请注意,GetType(string)仅在Ty

为什么我不能做
Class.GetMethod(string)
,但我可以做
this.GetType().GetMethod(string)

我想做前一个,因为我已经知道我要搜索的类,所以看起来会快得多。

是在类上声明的方法。。。你看的课上没有。(特别是,该类还可以有一个
GetMethod
方法,这会使事情变得非常混乱……)

你可以用

typeof(Class).GetMethod(...)
尽管如此,与其获取特定实例的类型,还不如说这就是您想要的


编辑:请注意,
GetType(string)
仅在
Type
Assembly
上声明(可能还有一些其他类型)。普通的
对象.GetType()
方法没有字符串参数。

因为前者是对类调用静态方法的方式

如果要获取类的类型,只需使用:


好吧,你可以选择:

typeof (MyClass).GetMethod("MyMethod");

只需添加-
myClass.GetType().GetMethod(“MyMethod”)
-在运行时解析,其中
typeof(myClass).GetMethod(“MyMethod”)
在编译时解析


更详细一点。

我猜如果我能给它一些更具体的东西(不是字符串),它会更快…所以是的,我想这确实有帮助@ovatsug25:你说的“给它更具体的东西”是什么意思?您的要求在这里很不清楚。。。您所希望的
Class.GetMethod(string)
仍在使用字符串。。。我以为您只想摆脱对
this.GetType(string)
的调用,事实上,它甚至不会编译。我认为您的第二个示例与第一个示例不同。第一个示例调用
类型
类的
GetMethod
方法。第二个示例尝试调用
MyClass
类型上的
GetMethod
。如果
MyClass
没有定义名为
GetMethod
的方法,它将生成编译错误。也许您的第二个示例是
myClass.GetType().GetMethod(“MyMethod”)
?@ChrisDunaway Nope,如果找不到该方法,两者都将返回null。你也看到我的编辑了吗(我承认有区别),这就是你的意思吗?@ChrisDunaway是的,我有一个打字错误,我是在匆忙中做的,修正了。
typeof (MyClass).GetMethod("MyMethod");
MyClass myClass = new MyClass();
myClass.GetType().GetMethod("MyMethod");