Nullable是通过HasValue=false的反射创建的,只给出“Type”类型的参数。给出了一个Nullable,我如何创建一个HasValue=false的该类型的实例?也就是说,填写这段代码://typeisguaranteedtoimplementNullablepublicstaticobjectCreate(Typetype){//用反射实例化一个HasValue=false的Nullable,并返回它}我试了,不行(它抛出NullReferenceException)因为没有默认构造函数:staticvoidMain(string[]args){Console.WriteLine(Create(typeof(Nullable)));控制台.ReadLine();}//type保证从NullablepublicstaticobjectCreate(Typetype){//实例化一个具有反射的Nullable,其HasValue=false,并返回它returntype.GetConstructor(newType[0]).Invoke(new对象[0]);给定一个Nullable类型参数,如何使用HasValue=false创建该类型的实例?如果你想要一个带有签名对象的方法,你只需返回null://typeisguaranteedtobeimplementedfromNullablepublicstaticobjectCreate(Typetype){returnnull;这将始终是任何HasValue为null可空类型的值的装箱表示换句话说,这种方法没有任何意义......您还可以使用空文字:vari=(int?)null;当然,如果不能保证类型是可空值类型,您可能希望对代码进行条件化……但了解没有可空值的对象表示很重要。装箱表示是不可空类型的装箱表示,即使对于不可空值也是如此:int?x=5;对象y=x;//拳击Console.WriteLine(y.GetType());//系统.Int32;nullabilityhasvanished非常危险(不推荐用于非测试目的)是使用SharpUtils的方法UnsafeTools.Box(T?nullable)。它绕过了可空类型的正常装箱,即装箱它们的值或返回null,而是创建一个实际的Nullable实例。请注意,使用此类实例可能是非常错误的。以上是C#学习教程:Nullable是通过HasValue=false的反射创建的,只给出类型为“Type”的参数共享的所有内容。如果对大家有用,需要详细了解C#学习教程,希望大家多多关注——publicstaticobjectCreate()whereT:struct//T必须是一个普通的struct,不能为nullable{returnUnsafeTools.Box(默认(T?));}本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
