zoukankan      html  css  js  c++  java
  • C#数据类型

    一。

    值类型和引用类型.

    C#常用数据类型

              java                                      C#

    整形        int            int

    浮点型       float           float

    双精度行      double          double

    字符串        Strinng           string

    布尔类       boolean          bool

    枚举类       enum           enum

    --值类型

    源于System.ValueType家族,每个值类型的对象都有一个独立的内存区域用于保存自己的值,值类型数据所在的内存区域称为栈(Stack)。

    只要在代码中修改它,就会在它的内存区域保存这个值。

    小结

    对值类型,不同的变量会分配不同的存储空间,并且存储空间中的存储的是改变量的值。赋值操作传递值的是变量的值,改变一个变量的值不会影响另一个变量的值。

    --应用类型

    源于System.Object家族在C#中引用类型主要包括数值,类的接口等。

    示例--

     1 class program
     2 {
     3     static void Main(string [] args)
     4 {
     5     int [] infozhang =new int [] {170,60}; //张浩的身高和体重信息
     6     int [] infoli=infozhang;  //数值引用赋值
     7     Console.WritLine("去年--张浩的身高{0},体重{1}",infozhong[0],infozhong[1]);
     8     Console.WritLine("去年--李明的身高{0},体重{1}",infoli[0],infoli[1]);
     9     infoli[0]=180;
    10     infoli[1]=70;
    11     Console.WritLine("今年--张浩的身高{0},体重{1}",infozhong[0],infozhong[1]);
    12     Console.WritLine("今年--李明的身高{0},体重{1}",infoli[0],infoli[1]);
    13       Console.ReadLine();
    14      }
    15 }

    小结

    对引用类型,赋值是把原对象的引用传递给另一个引用,对数组而言,当一个数组引用赋值给另另一个数组引用后,这两个引用指向同一个数组,也就是同一个存储空间。

    --示例

        class Program
        {
            static void Main(string[] args)
            {
                int[] infozhang = new int[] { 170,60};
                int[] infoli = new int[2];
                Console.WriteLine("复制前的--黎明身高{0},体重{1}",infoli[0],infoli[1]);
               //数组复制
                for (int i = 0; i < infozhang.LongLength;i++ )
                {
                    infoli[i] = infozhang[i];
                }
                Console.WriteLine("去年的--张浩身高{0},体重{1},黎明{2},黎{3}",infozhang[0], infozhang[1], infoli[0], infoli[1]);
                infoli[0] = 180;    //今年的身高变成180
                infoli[1] = 70;     //今年的体重变成70
                Console.WriteLine("今年的--张浩身高{0},体重{1},黎明{2},黎明{3}",  infozhang[0], infozhang[1], infoli[0], infoli[1]);
                Console.ReadLine();
            }
        }    

    数组复制可以利用循环实现,对于两个数组arry1和arry2(arry2的长度不小于arry1的长度)将数组arry1中元素的值复制到arry2中。

    --细分值类型和引用类型

    值类型--

    基本数据类型:int 长度型:long 浮点型: float double char bool

    枚举类:enum

    结构类:struct

    引用类型--

    类:基类:System.Object  字符串:string  自定义类:class

    接口:interface

    数组:int [] ,string[] 

    ---结构

    定义:

    访问修饰符 struct 结构名

    {

       //结构体

    }

    结构的定义有以下特点

    --结构中可以有字段,也可以有数据

    --定义时,结构中的字段不能被赋初值

    结构的使用

    可以不用new 直接定义对象即可

    声明结构对象后,必须给结构的成员赋初值

    -------装箱和拆箱

        class Program
        {
            static void Main(string[] args)
            {
                int i=123;
                object o=i;    //装箱
                 i=456//改变i的内容
                Console.WriteLine("值类型的值{0}",i);
                Console.WriteLine("引用类型的值{0}",o); 
    
    
                 int i=123;
                object o=i;    //装箱
                int t=(int)o;   //拆箱
    
             }
        }                        

    --不同类型的参数传递

    使用值传递,在方法中对参数的更改在调用后不能保留。

    使用ref方式传递,可以保留对参数值的更改。

    ---值方式参数传递和引用方式传递

    使用值方式(不用ref修饰)传递值类型参数时,参数在方法中的修改不会保留。

    使用值方式(不用ref修饰)引用类型参数时,参数在方法中的修改会保留。

    使用引用方式(不用ref修饰)传递值类型和引用类型参数时,参数在方法中的修改都会保留。

                 

  • 相关阅读:
    Android读书笔记三
    Android读书笔记二
    Android读书笔记一
    cpp plugin system
    houdini已放弃2
    ssh-keygen
    linux library
    software with plugin
    houdini已放弃
    C++ template
  • 原文地址:https://www.cnblogs.com/matianpeng/p/8144921.html
Copyright © 2011-2022 走看看