zoukankan      html  css  js  c++  java
  • C#中值类型与引用类型

    1. 值类型

    A,像int, float, char , double,bool等都是值类型

    B,string, 自定义类等都是引用类型

    它们的区别:源于复制策略的不同,

    值类型直接包含值,换言之,变量引用的位置就是值在内存中实际存储的位置。因此,将一个原始变量的值赋给另一个变量,会在新变量的位置创建原始变量的值的一个内存副本。两个变量不可能引用同一个内存位置(除非其中一个或两个都是out或ref参数;根据定义,这种参数是另一个变量的别名),更改原始变量的值不会影响另一个变量的值,变量各有各的存储位置。因此,改变一个值类型变量的值不会影响其他任何值类型的值。

      2.引用类型

     对于引用类型的变量,它的值是对一个对象实例的引用,引用类型的变量存储的是引用(通常是内存地址),要去那个位置找到对象实例的数据。

    1. 自定义值类型的重要性

    两种自定义值类型

    A, 结构体(struct),B,枚举(enum)

             声明结构

             //use keword struct to declare a value type

    struct Angle

    {

             public Angle(int degrees,int minutes,int seconds)

             {

                       _Degrees = degrees;

                       _Minutes = minutes;

                       _Seconds = seconds;

             }

            

             public int Degrees

             {

                       get{ return _Degrees; }

             }

             private int _Degrees;

            

             public int Minutes

             {

                       get{ return _Minutes;}

             }

             private int _Minutes;

            

             public int Seconds

             {

                       get{ return _Seconds;}

             }

             private int _Seconds;

    public Angle Move(int degrees, int minutes, int seconds)

             {

                       return new Angle(

                                Degrees + degrees,

                                Minutes + minutes,

                                Seconds + seconds

                       )

             }

    }

  • 相关阅读:
    ESP8266-12F引脚接法
    esp8266物联网开发六:让ESP32-CAM五彩斑斓
    esp8266物联网开发五:SSL保驾护航
    esp8266物联网开发四:MQTT再论部控
    esp8266物联网开发三:MQTT初窥貌容
    esp8266物联网开发二:Arduino名门正派
    esp8266物联网开发一:MicroPython初战江湖
    一些错误记录
    jimdb压测踩坑记
    Caffeine批量加载浅析
  • 原文地址:https://www.cnblogs.com/gylhaut/p/5734765.html
Copyright © 2011-2022 走看看