北京做网站哪家便宜,免费网站建设培训,seo代运营,凡科可以做返利网站吗委托
方法的容器#xff1a;委托可以存储一个或多个方法的引用。可以使用委托对象来调用这些方法。函数/方法的变量类型#xff1a;委托类型可以像变量一样声明和使用#xff0c;存储方法的引用。存储、传递方法#xff1a;委托可以作为参数传递给方法#xff0c;也可以作…委托
方法的容器委托可以存储一个或多个方法的引用。可以使用委托对象来调用这些方法。函数/方法的变量类型委托类型可以像变量一样声明和使用存储方法的引用。存储、传递方法委托可以作为参数传递给方法也可以作为方法的返回值。这使得方法可以接收其他方法作为参数或返回方法。本质是一个类每个委托类型在编译时都会生成一个类继承自 System.Delegate 或 System.MulticastDelegate。这个类提供了 Invoke 方法用于调用委托所指向的方法。
事件
与委托使用方法一样 不同点事件不可以在外部被调用不可以在外部置空 只可以在外部进行、-的操作 public class Card {public Card(){Test.MAC?.Invoke();Test.MAC_args?.Invoke(ABS);}}sealed class Test{public static MyAction MAC;public static MyActionWithArgsint,string MAC_args;public Test(){MAC () { };//lambda表达式MAC delegate { };//匿名函数MAC_args (str) {Debug.LogError(str);return 1;};MAC_args delegate(string str) { Debug.LogError(str); return 1;};}}public delegate void MyAction();public delegate T MyActionWithArgsT,K(K k);//有参有返回协变
1、out 修饰的泛型类型 只能作为返回值不能作为参数(如Func) 2、父类泛型委托容器可以装子类泛型委托容器如下方法 public class CovarianceClass{delegate T Covarianceout T();public CovarianceClass(){CovarianceSon son () { return new Son();};CovarianceFather father son;//父类容器装子类容器协变}}public class Father{}public class Son : Father{}逆变
1、in 修饰的泛型类型表示只能作为参数不能返回如Action 2、子类泛型容器可以装父类泛型容器如下方法 public class ContravarianceClass{delegate void Contravariancein T(T t);public ContravarianceClass(){ContravarianceFather father (t) { };ContravarianceSon son father;//子类容器可以装父类容器逆变}}public class Father{}public class Son : Father{}typeof
用于获取Type public enum SpAtlasEnum{Cards_00,}SpAtlasEnum A (SpAtlasEnum)Enum.Parse(typeof(SpAtlasEnum),Cards_00);//可以转换string为枚举需要反射SpAtlasEnum B (SpAtlasEnum)0;//直接将int转为枚举性能最佳Type
dll一般需要运行过才会生成 public GameManager(){Assembly assembly Assembly.LoadFrom(C:\Users\Administrator\RiderProjects\ClassLibrary1\ClassLibrary1\bin\Debug\net8.0\ClassLibrary1.dll);//找到这个dllType[] assemblyAllInfo assembly.GetTypes();for (int i 0; i assemblyAllInfo.Length; i){Debug.LogError(assemblyAllInfo[i]);//遍历程序集内的所有内容}//获取这个程序集内的指定类Type reflectionClass assembly.GetType(Reflection_Namespace.Reflection_Class);//将他实例化object obj Activator.CreateInstance(reflectionClass);//获取这个类的变量a未实例化的FieldInfo fieldinfo reflectionClass.GetField(a);//设置该变量a指定 实例化的obj fieldinfo.SetValue(obj,131);//打印实例化的obj的变量a的值Debug.LogError(fieldinfo.GetValue(obj));//同理 获取方法未实例化的MethodInfo methodInfo reflectionClass.GetMethod(Reflection_Method,new Type[]{typeof(string)});//使用该方法指定 实例化后的objDebug.LogError(methodInfo.Invoke(obj, new object[] {Reflection })); }}