网站建设认知与理解,网上书城网站建设总结,凡科手机网站设置问题,网站开发信息发布在 C# 中#xff0c;Invoke() 是一个用于调用方法的方法#xff0c;它能够在运行时动态地调用一个方法。
Invoke() 方法的使用方式有两种#xff1a;
通过 MethodInfo 对象调用#xff1a;
using System.Reflection;namespace ConsoleApp_Invoke
{public class Program{…在 C# 中Invoke() 是一个用于调用方法的方法它能够在运行时动态地调用一个方法。
Invoke() 方法的使用方式有两种
通过 MethodInfo 对象调用
using System.Reflection;namespace ConsoleApp_Invoke
{public class Program{static void Main(string[] args){MethodInfo openMethodInfo typeof(MyStore).GetMethod(Open);openMethodInfo.Invoke(new MyStore(), null); // 如果调用的方法参数为空则第二个参数为nullMethodInfo sellMethodInfo typeof(MyStore).GetMethod(Sell);sellMethodInfo.Invoke(new MyStore(), new object[] { 苹果, 10 }); // 如果调用的方法有参数则第二个参数传递一个参数数组}}public class MyStore{public void Open(){Console.WriteLine(早上商店进行开张了);}public void Sell(string Name, int count){Console.WriteLine($出售{count}件{Name});}}
}在上面的示例中我们首先通过 typeof(MyStore).GetMethod(MyMethod) 获取了 Open 方法的 MethodInfo 对象然后使用 Invoke() 方法调用该方法。
Invoke() 方法接受两个参数 第一个参数是要调用方法的对象实例如果方法是静态的则可以传递 null 第二个参数是方法的参数数组如上面我们调用Sell方法。
通过委托调用
Actionstring myDelegate new MyClass().MyMethod; // 创建委托对象
myDelegate.Invoke(Hello); // 调用委托在上面的示例中我们首先创建了一个 Actionstring 委托对象并将其初始化为 MyMethod 方法然后使用 Invoke() 方法调用委托。与第一种方式相比这种方式更加简洁但使用委托调用方法需要确保委托的签名与要调用的方法的签名匹配。
无论使用哪种方式Invoke() 方法都可以用于调用方法并传递参数。
需要注意的是Invoke() 方法的调用可能会引发 TargetException、MethodAccessException、TargetInvocationException 等异常所以在实际使用中应该进行异常处理。