• C#基础 [06] 字段


    一、实例成员与静态成员

      在上一篇文章中,将成员按照作用,分为数据成员和函数成员。从另一个角度——成员的生存期(或者说作用域、存在性),可以将成员分为实例成员与静态成员。

      1.实例成员

        实例成员是和类的实例关联的,类的每个实例都拥有自己的各个类成员的复制。实例成员随着实例的创建而创建,随着实例的销毁而销毁。默认情况下,成员都是实例成员,被关联到一个实例。实例成员使用"实例名.成员名”访问。

      2.静态成员

        静态成员是和类本身相关联的类成员,他们被类的所有实例共享,所有实例都访问同一内存位置。静态成员的生存期也是与类本身相关的,只要类声明完成就可以访问,它的存在性与实例无关。要声明一个静态成员,需要在成员类型之前使用static修饰符。静态成员使用“类名.成员名”的方式访问。

    二、实例字段

      1.实例字段的声明与访问

        我们常说的字段,默认的就是实例字段。实例字段就是声明在类中、隶属于类的变量。

        下面是一个实例字段的例子,注意:实例d2.Member的值的改变对d1.Member的值没有影响,因为他们属于不同的实例,d1和d2都有类字段Member的复制。

     1     class D
     2     {
     3         //  声明一个整型实例字段
     4         public int Member;
     5     }
     6 
     7     class Program
     8     {
     9         static void Main(string[] args)
    10         {
    11             D d1 = new D();
    12             D d2 = new D();
    13             d1.Member = 1;
    14             d2.Member = 2;
    15             Console.WriteLine("d1.Member = {0},d2.Member = {1}", d1.Member, d2.Member);
    16         }
    17     }

      2.字段的初始化

        1).显式初始化

          显式初始化就是在字段声明的同时使用初始化语句(求值表达式)为字段赋初值,而且该初始值必须是编译器可以确定的。

    1     class D
    2     {
    3         // 显式初始化
    4         public int Member = 10;
    5         public string Member1 = "haha";
    6    
    7     }

        2).隐式初始化

          如果在字段声明的时候没有初始化语句,那么字段的值就是编译器为它根据字段的类型分配的默认值。值类型的默认值都是0,bool类型的默认值是false,引用类型的默认值是null。

    1     class D
    2     {
    3   
    4        // 隐式初始化
    5         public int x;   // x = 0
    6         public Person p;    // p = null
    7 
    8 
    9     }

    三、静态字段

      1.静态字段的声明与访问

        静态字段与实例字段的主要区别主要在于存储位置与作用域方面,而声明方式相差不大。使用static关键字作为修饰符就可以声明一个静态字段。    

    1     class D
    2     {
    3         // 实例字段
    4         public int M1;
    5         //静态字段
    6         public static int M2;
    7     }

      2.静态字段示例  

     1     class D
     2     {
     3         public int Member;
     4         // 实例字段
     5         public int M1;
     6         // 静态字段
     7         public static int M2;
     8 
     9         public void OutPut()
    10         {
    11             // 在类的内部,访问静态成员与访问实例成员一样
    12             Console.WriteLine("M1={0},M2={1}", M1, M2);
    13         }
    14     }
     1     class Program
     2     {
     3         static void Main(string[] args)
     4         {
     5 
     6             // 创建类的一个实例
     7             D d3 = new D();
     8 
     9             // 实例字段通过"实例名.字段名"进行访问
    10             d3.M1 = 5;
    11             // 静态字段通过“类名.成员名”进行访问
    12             D.M2 = 10;
    13             d3.OutPut();
    14 
    15 
    16         }
    17     }
  • 相关阅读:
    Cocos2dx使用ios内支付IAP具体流程-白白
    Linux下完美使用find+grep实现全局代码搜索
    扩展GCD 中国剩余定理(CRT) 乘法逆元模版
    java实现floyd统计天津地铁的网站距离
    并查集
    HTML5:理解head
    Pivotal Cloud Foundry安全原理解析
    tar、7z(7zip)压缩/解压缩指令的使用
    Linux下C编程的学习_1
    【leetcode】Find Minimum in Rotated Sorted Array I & II (middle)
  • 原文地址:https://www.cnblogs.com/sunyunh/p/2840097.html
Copyright © 2020-2023  润新知