C#代码告诉你这是什么类型。
1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 using System.Threading.Tasks; 6 7 namespace 值类型引用类型 8 { 9 class Program 10 { 11 static void Main(string[] args) 12 { 13 Func<object, string> fnGetType = delegate (object obj)//委托类型 14 { 15 var result = ""; 16 if (obj != null) 17 { 18 var aa = obj.GetType(); 19 if (aa.IsValueType) result = aa.Name + "该类型是值类型";//是否是值类型,false则为引用类型 20 else result = aa.Name + "该类型是引用类型"; 21 } 22 return result; 23 }; 24 Func<object, string> fnGetType1 = (object obj) =>//既然是委托类型,也同样可以与匿名函数、或者采用Lambda表达式结合使用 25 { 26 var result = ""; 27 if (obj != null) 28 { 29 var aa = obj.GetType(); 30 if (aa.IsValueType) result = aa.Name + "该类型是值类型";//是否是值类型,false则为引用类型 31 else result = aa.Name + "该类型是引用类型"; 32 } 33 return result; 34 }; 35 36 int a = 1; 37 string b = "1"; 38 char c = '/'; 39 long d = 123; 40 decimal e = 2.00m; 41 byte f = 1; 42 var g = new Program(); 43 var h = new Student(); 44 Console.WriteLine(fnGetType(a)); 45 Console.WriteLine(fnGetType1(b)); 46 Console.WriteLine(fnGetType(c)); 47 Console.WriteLine(fnGetType1(d)); 48 Console.WriteLine(fnGetType(e)); 49 Console.WriteLine(fnGetType(f)); 50 Console.WriteLine(fnGetType1(g)); 51 Console.WriteLine(fnGetType(h)); 52 Console.ReadKey(); 53 } 54 } 55 public class Student 56 { 57 public Student() { } 58 public Student(string name, string sex, int age) 59 { 60 Name = name; 61 Sex = sex; 62 Age = age; 63 } 64 public string Name { get; } 65 public string Sex { get; } 66 public int? Age { get; }//值类型才能为空 67 } 68 }
控制台运行结果如下图:
总结一下:
值类型和引用类型的区别
所有继承System.Value的类型都是值类型,其他类型都是引用类型。
引用类型可以派生出新的类型,而值类型不能;
引用类型存储在堆中,而值类型既可以存储在堆中也可以存储在栈中。
引用类型可以包含null值,值类型不能(可空类型功能允许将 null 赋给值类型);
引用类型变量的赋值只复制对对象的引用,而不复制对象本身。而将一个值类型变量赋给另一个值类型变量时,将复制包含的值。
当比较两个值类型时,进行的是内容比较;而比较两个引用类型时,进行的是引用比较。
值类型在内存管理方面具有更好的效率,并且不支持多态,适合用作存储数据的载体;引用类型支持多态,适合用于定义应用程序的行为。
Int[]是引用类型还是值类型
数组类型是一族类型,它们都继承System.Array,而System.Array继承自System.Object。所以所有的数组类型都是引用类型
具体详细,可以见博客园 http://www.cnblogs.com/jiajiayuan/archive/2011/09/23/2185966.html