深入.NET数据类型(1)

时间:2022-05-04
本文章向大家介绍深入.NET数据类型(1),主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

一.值类型和引用类型

  所有的值类型和引用类型的引用都存在“栈”中

  1.值类型

    命名空间:System.ValueType

    值类型数据储存所在的内存区域成为栈

    值类型主要包括基本数据类型和枚举类型,结构

    值类型的赋值原理:

      在栈上复制的真实值

    实例代码:

            //张浩和李明去年身高都是170cm,今年李明长到了180cm,张浩没有变化,
            //输出去年和今年两人身高
            int zhheight = 170;
            int lmheigt = zhheight;
            Console.WriteLine("去年张浩身高是{0}t李明的身高是{1}", zhheight, lmheigt);
            lmheigt = 180;
            Console.WriteLine("今年张浩身高是{0}t李明的身高是{1}", zhheight, lmheigt);         

  2.引用类型

    命名空间:System.Onject

    引用类型主要包括数组,类和接口,字符串等

    储存在栈和堆中

    堆上储存的真实对象本身真实对象的属性

    示例代码:

        int[] zhArray={170,60};
           int[] lmArray = zhArray;
            Console.WriteLine("去年张浩身高是{0},体重是{1}t李明的身高是{2},体重是{3}", zhArray[0],zhArray[1], lmArray[0],lmArray[1]);
            Console.WriteLine("================我是高贵的分割线====================");
            lmArray[0] = 180;
           lmArray[1] = 70;
            Console.WriteLine("今年张浩身高是{0},体重是{1}t李明的身高是{2},体重是{3}", zhArray[0], zhArray[1], lmArray[0], lmArray[1]);






        //解决:

        int[] zhArray = { 170, 60 };
            int[] lmArray = new int[2];
            for (int i = 0; i < zhArray.Length; i++)
            {
                lmArray[i] = zhArray[i];
            }
            Console.WriteLine("去年张浩身高是{0},体重是{1}t李明的身高是{2},体重是{3}", zhArray[0], zhArray[1], lmArray[0], lmArray[1]);
            Console.WriteLine("================我是高贵的分割线======================");
           
            lmArray[0] = 180;
            lmArray[1] = 70;
            Console.WriteLine("今年张浩身高是{0},体重是{1}t李明的身高是{2},体重是{3}", zhArray[0], zhArray[1], lmArray[0], lmArray[1]);

  3.细分值类型和引用类型

类别

描述

值类型

基本数据类型

整型:int

&长整型:long

浮点型:float 双精度:double

字符型:char

波尔型:bool

枚举类型

枚举:enum

结构类型

结构:strut

引用类型

基类:System.Object

字符串:string

自定义类:class

接口

接口:interface

数组

数组:int[],string[]

二.结构

  1.定义:

    语法:

         访问修饰符 struct 结构名
      {
        //结构体
      }                

      特点:

      结构中可以有字段,也可以有方法

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

    示例代码:

 //定一个自己的结构体
    public struct MyPointer
    {

        //成员 属性   结构体的成员变量不能有初值
        private int age;

        public int Age
        {
            get { return age; }
            set { age = value; }
        }
        //结构体中可以定义方法
        public void show() 
        {
           
        }

    }

  2.使用

    可以不用new。直接定义结构的对象即可

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

    示例代码:

     static void Main(string[] args)
        {
            //使用结构体
            MyPointer pointer=new MyPointer();
            pointer.Age = 20;
            pointer.show();
        }

  3.使用经验

    不推荐使用(结构用得越多所消耗的存储空间也越多)

三.构造函数

   示例代码:

  public  class Player
    {
   //无参
        private Player() 
        { 
            //归类:方法(方法)/函数 (面向过程)
        }
        //有参
        public Player(string name)
        {

            //归类:方法(方法)/函数 (面向过程)
        }
    }