zoukankan      html  css  js  c++  java
  • 对静态关键字static 的理解

    先看C#参考说明对 static 的定义:

    (1) 使用 static 修饰符声明属于类型本身而不是属于特定对象的静态成员。

    static修饰的静态成员为类专属而与对象实例无关. 比如 Math类中 PI 的定义就是这样的:

    public class Math

    {

       public static PI = 3.14159265358979323846;

       ...

    }

    PI相当于公共的全局常量, 访问它方式: Math.PI.

    静态字段和属性只在类中有一个副本, 并不包含于每一个对象实例中.

    (2) static 修饰符可用于类、字段、方法、属性、运算符、事件和构造函数,但不能用于索引器、析构函数或类以外的类型。

    声明为 static 的类是静态类, 其所包含的成员必须都为静态的;

    static 方法则称之为类方法.

    static 字段和属性为所有对象实例所共享, 其访问限制可以通过访问修饰符设定.

    public class Circle

    {

      public static TotalCount=0; //公共静态的字段

      public Circle()

      { TotalCount++;}

    }

    如果希望静态字段只允许类内部可以修改,而在类外部只允许读取, 则可以这样定义:

    public class Circle

    {

      private static totalCount=0; //私有静态的字段

      public Circle()

      { totalCount++;}

      public static TotalCount       //只读静态属性

    {

        get{ return totalCount;}

        private set;

    }

      public static void ResetCount()  // 清零, 也可以限定外部访问指定的对私有静态字段的操作(如果这样的逻辑是合理的话)

    {

        totalCount = 0;

    }

    }

    另外, 在静态方法中不能访问非静态字段和属性, 否则会得到如下的错误提示:

    非静态的字段、方法或属性“member”要求对象引用.

    还有,在静态成员中不能引用 this关键字, 因为 this 代表类的当前实例.

    ~做事情贵在坚持~
  • 相关阅读:
    Python自学之路-面试题
    k8s学习笔记之三:configmap和secret
    k8s学习笔记之二:Pod
    k8s学习笔记之四:使用kubeadm配置Ingress
    k8s学习笔记之一:使用kubeadm安装k8s集群
    HTTP content-type
    Json对象和Json字符串的区别
    .net 5+ 知新:【2】 .Net Framework 、.Net 、 .NET Standard的概念与区别
    Log4net和Nlog
    通过系统存储过程手动执行SQL Server中的Job
  • 原文地址:https://www.cnblogs.com/csMapx/p/2073015.html
Copyright © 2011-2022 走看看