一 值类型:
内置的值类型,如下
基元类型包括这些:Boolean ,Char ,SByte ,Byte ,Int16 ,UInt16 ,Int32 ,UInt32 ,Int64 ,UInt64 ,IntPtr ,UIntPtr ,Single ,Double 。
二 类型转换
虽然 long 和 int 之间并不存在继承关系 ,但是编译器允许 从int 到 long的隐私转换。
对于强制转换,.net 总是向下取整 ,而不是四舍五入那样的向上取整。如 (int)6.8F 结果是6。
三 性能方面
使用引用类型性能一般比较低,因为需要经过下面这几步
1. 内存必须从堆中分配
2.堆上分配的每个对象都有一些额外的开销成员, 必须初始化,如同步块索引,类型对象指针
3. 引用类型内部的成员也需要初始化
4. 从托管堆分配对象时,可能会引起垃圾回收
使用值类型也需要注意:
1. 避免大量的复制操作
2. 如果有判断是否相等的操作请覆盖 ValueType基类提供的Equals方法(由于使用了反射和装箱等操作),值类型需要继承IEquatable<T>接口,然后重新Equals方法,
如:struct Vector : IEquatable<Vector> ,里编写方法public override bool Equals(object obj) 和 public bool Equals(Vector other) 。
如果有按照大小排序的操作还需要实现System..IComparable接口中的CompareTo方法和System..IComparable<T>类型安全的CompareTo方法。还可以考虑运算符重载。
原文:https://www.cnblogs.com/francisXu/p/13602717.html