zoukankan      html  css  js  c++  java
  • C#中静态类、静态方法和静态变量的简单说明

       静态方法与静态变量一样,属于类本身,而不属于哪个类的一个对象。调用一个被定义为static的方法,只有通过在它前面加上这个类的名称。一般定义里说是可以通过实例调用的。其他语言我还没测试,但是在C#中是不行的,只能通过类型名称引用它(静态变量也是哦)。

     1     class Class1
     2     {
     3         public static string No { set; get; }
     4         public string Second { set; get; }
     5 
     6         public static void Wmt()
     7         {
     8             No = "我是静态成员";
     9         }
    10 
    11     }
    12 
    13     class Class2
    14     {
    15         public void Test()
    16         {
    17             Class1.Wmt();
    18             Class1.No = "我是静态成员";
    19             var class1 = new Class1();
    20             class1.Second = "我是非静态成员";
    21 
    22         }
    23 
    24     }

    还有几点:

          1、静态方法只能调用类的静态成员,但它内部是可以定义变量的(常量也能放在静态方法里(编译器会隐式设置为静态))

          2、一般方法也可以调用静态成员

     1     class Class1
     2     {
     3         public static string No { set; get; }
     4         public string Second { set; get; }
     5 
     6         public static void Wmt()
     7         {
     8             string variate = "我是个变量";
     9             No = "我是静态成员";
    10         }
    11 
    12         public void Www()
    13         {
    14             No = "我是静态成员";
    15         }
    16 
    17     }
    

    如果类只包含静态方法、属性,那它就是静态类

    1 static class class1
    2 {
    3     public static string No { set; get; }
    4 
    5     public static void Wmt()
    6     {
    7 
    8     }
    9 }

    再提下常量和只读字段的区别吧:

    常量是一个包含不能修改的值的变量,它是静态的。而只读字段不仅能在声明时初始化,还能在构造函数中赋值,适合用于要通过计算才能确定初始值。只读字段还能是个实例字段哦,类的每个对象都能有不同的值。注意:不一定非要在构造函数中给只读字段赋值,如果没有赋值,它的值就是特定数据类型的默认值。

     1 using System;
     2 using System.Collections.Generic;
     3 using System.Linq;
     4 using System.Text;
     5 
     6 namespace ConsoleApplication3
     7 {
     8     class Program
     9     {
    10         static void Main(string[] args)
    11         {
    12             var cl = new class1("I'm readonly");
    13             var c2 = new class1("I'm readonly too");
    14             var c3 = new class1();
    15             Console.WriteLine(cl.Wmt);
    16             Console.Write(c2.Wmt);
    17             Console.Write(c3.Wmt);
    18             Console.Read();
    19         }
    20     }
    21     public class class1
    22     {
    23         public readonly string Wmt;
    24         public class1(string words)
    25         {
    26             Wmt = words;
    27         }
    28 
    29         public class1()
    30         {
    31         }
    32     }
    33 
    34 }

    运行结果:

    复习下知识,再把基础的东西翻出来看看,别有一番体会~~

  • 相关阅读:
    使用node-inspector调试nodejs程序<nodejs>
    2015 2月记事(1)
    设置npm安装模块目录<nodejs>
    BZOJ 1965 [AHOI2005]洗牌
    BZOJ 1924 [Sdoi2010]所驼门王的宝藏
    【NOIP2003】传染病控制
    BZOJ [Scoi2015]情报传递
    [Noi2002]Savage
    BZOJ 4025: 二分图
    BZOJ 4999 This Problem Is Too Simple!
  • 原文地址:https://www.cnblogs.com/WMTcore/p/3844676.html
Copyright © 2011-2022 走看看