zoukankan      html  css  js  c++  java
  • 《.NET框架程序设计》第5章 基元类型、引用类型与值类型

    5.1 基元类型
    基元类型可以用快捷语法。比如int a=0;等同于System.Int32 a=new System.Int32();
    建议,使用全名,为了代码含义看起来更清晰。

    5.1.1 Checked与Unchecked基元类型操作
    默认情况下,编译器溢出检查是关闭。使用/checked+命令开启溢出检查。
    数值运算溢出会抛出OverflowException异常。
    使用/checked-命令关闭溢出检查,使用checked关键字检查溢出,如有溢出抛出。如果没用关键字,有溢出仍然执行程序。
    建议,开发程序时开启溢出检查,发布程序时关闭溢出检查。

    5.2 引用类型和值类型
    值类型从内存栈上分配内存。值类型不受垃圾收集器的控制。
    引用类型从内存托管上堆分配内存。所有成为"类"的都是引用类型。
    结构与枚举是值类型,继承自System.ValueType类型。值类型不能做基类和派生类。
    值类型初始化为0,引用类型初始化为null。
    值类型的互相赋值,是内存一大块的拷贝。引用类型的互相赋值,是指针的拷贝。
    建议,值类型不要用于频繁调用方法的参数和返回值。因为,值类型的拷贝方式决定。

    5.3 值类型的装箱与拆箱
    值类型转换成引用类型是装箱。引用类型转换成值类型是拆箱。
    装箱与拆箱会消耗内存与速度,尽量减少使用。
    什么时候应该手动装箱。
    Int32 v=5;
    Object o=v;
    Console.write("{0},{1},{2}",o,o,o);
    因为值类型没有方法表指针,所以不能多个线程对它同步访问。

    合乎自然而生生不息。。。
  • 相关阅读:
    git 常用命令
    centos 7 mini 安装
    python打印杨辉三角
    python 求100内的素数/质数
    字符串与bytes
    format
    Python字符串格式化
    数据结构
    ARM工作模式
    C语言实现字符串逆序输出
  • 原文地址:https://www.cnblogs.com/samwu/p/2199732.html
Copyright © 2011-2022 走看看