刚开始做汽配网站要进货,湖北专业网站建设耗材,git wordpress中文免费主题,正规的网站制作开发0.知识背景 局部类型适用于以下情况#xff1a; 类型特别大#xff0c;不宜放在一个文件中实现。一个类型中的一部分代码为自动化工具生成的代码#xff0c;不宜与我们自己编写的代码混合在一起。需要多人合作编写一个类 局部类型的限制: 局部类型只适用于类、接口、结构 类型特别大不宜放在一个文件中实现。一个类型中的一部分代码为自动化工具生成的代码不宜与我们自己编写的代码混合在一起。需要多人合作编写一个类 局部类型的限制: 局部类型只适用于类、接口、结构不支持委托和枚举。同一个类型的各个部分必须都有修饰符 partial。使用局部类型时一个类型的各个部分必须位于相同的命名空间中。一个类型的各个部分必须被同时编译。 局部类型的注意点: 关键字partial是一个上下文关键字只有和 class、struct、interface 放在一起时才有关键字的含义。因此partial的引入不会影响现有代码中名称为partial的变量。局部类型的各个部分一般是分开放在几个不同的.cs文件中但C#编译器允许我们将他们放在同一文件中。 1. 代码结构介绍 校验的功能
4个不同目录下面的partial 类校验是否可以都被调用到不同类中独有的方法Fun() 、Fun2()、Fun3()、Fun5() 在一个partial 类SmallClass中定义变量int校验其他类中是否可以调用改变量 2.代码部分 AnotherClass.cs using System.Reflection;namespace ConsoleDeomAlien.MultiClass
{public partial class NormalClass{private const string name3 alien3;public void Fun3(){string methodName MethodBase.GetCurrentMethod().Name;Console.WriteLine(${className}----{methodName}-----{name3}\n);}}
} NormalClass.cs using System.Reflection;namespace ConsoleDeomAlien.MultiClass
{public partial class NormalClass{private const string name alien;string className MethodBase.GetCurrentMethod().ReflectedType.Name;public void Fun(){string methodName MethodBase.GetCurrentMethod().Name;Console.WriteLine(${className}----{methodName}-----{name}\n);Console.WriteLine(${className}----{methodName}-----{age}\n);}}
} SpecialClass.cs using System.Reflection;namespace ConsoleDeomAlien.MultiClass
{public partial class NormalClass{private const string name2 alien2;public void Fun2(){string methodName MethodBase.GetCurrentMethod().Name;Console.WriteLine(${className}----{methodName}-----{name2}\n);}}
} SmallClass.cs using System.Reflection;namespace ConsoleDeomAlien.MultiClass
{public partial class NormalClass{private const string name5 alien5;public int age 18;public void Fun5(){string methodName MethodBase.GetCurrentMethod().Name;Console.WriteLine(${className}----{methodName}-----{name5}\n);}}
} MainClass.cs using ConsoleDeomAlien.MultiClass;namespace ConsoleDeomAlien
{public class MainMethod{public static void Main(){var cc new NormalClass();cc.Fun();cc.Fun2();cc.Fun3();cc.Fun5();cc.age 22;Console.WriteLine($Main ---------{cc.age});Console.ReadKey();}}
} 3.讲解部分
每个partial 文件可以共享内容、共同组成一个类的前提是命名空间、类名都一摸一样,如下所示。 namespace ConsoleDeomAlien.MultiClass
{public partial class NormalClass{}
} 只要上面条件符合、发现文件在不同路径下都可以实现共享机制。 既然这个特殊的大类NormalClass需要多个文件共同维护那每个文件肯定包含一些独有的方法。但是只要初始化一次这个类每个文件中独有的方法都可以被调用到 在SmallClass.cs 文件中定义了age 这个变量但在NormalClass.cs文件中也同样调用到了这个变量age。且在main方法中修改这个变量之后这个值也变化了。 每个类中定义的私有变量private const string name可供该类中的方法单独使用方便与其他文件中的变量隔离。这样调用不同的方法可以获取不同的值了。 在NormalClass.cs中定义的变量string className可以获取到调用该方法对应的class 名称.且该变量可共其他的partial 文件访问到。 string className MethodBase.GetCurrentMethod().ReflectedType.Name;
在每个方法中定义的局部变量methodName可以获取到该方法的名称且这种方法名的获取方式只能在方法中获取在方法外不能获取到。 string methodName MethodBase.GetCurrentMethod().Name; 4.最终输出内容