c# – 为什么对于int属性,IsValueType为false?
发布时间:2020-12-15 23:50:46 所属栏目:百科 来源:网络整理
导读:再见, 我对这个问题很沮丧,我创建了一个简单的类,如下所示: public class Classe{ public int Intero { get; set; } public Int32 Intero32 { get; set; } public double Double { get; set; } public string Stringa { get; set; } public Classe PerRefer
再见,
我对这个问题很沮丧,我创建了一个简单的类,如下所示: public class Classe { public int Intero { get; set; } public Int32 Intero32 { get; set; } public double Double { get; set; } public string Stringa { get; set; } public Classe PerReferenza { get; set; } } 我编写了这个扩展方法,其目标是返回属性的引用默认值(引用的类型或值类型): public static class TypeExtensions { public static object GetDefaultValue(this Type t) { if (t.IsValueType) return Activator.CreateInstance(t); return null; } } 按照我的主要方法: static void Main(string[] args) { Classe c = new Classe(); foreach (var proprietà in c.GetType().GetProperties()) { var predefinito = proprietà.GetType().GetDefaultValue(); Console.WriteLine($"Default for {proprietà}: {predefinito ?? "NULL"}"); } Console.ReadKey(); } 这是我的输出: Default for Int32 Intero: NULL Default for Int32 Intero32: NULL Default for Double Double: NULL Default for System.String Stringa: NULL Default for ConsoleApp1.Classe PerReferenza: NULL 我无法理解为什么我总是为所有属性获得FALSE … Default for Int32 Intero: 0 Default for Int32 Intero32: 0 Default for Double Double: 0 Default for System.String Stringa: "" Default for ConsoleApp1.Classe PerReferenza: null 非常感谢… 解决方法
你的意思是proprietà.PropertyType.GetDefaultValue();您当前正在询问RuntimePropertyInfo是否为值类型(其中:它不是).
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |