C#中静态类、静态方法和静态变量的简单说明

2018-06-18 05:07:26来源:未知 阅读 ()

新老客户大回馈,云服务器低至5折

   静态方法与静态变量一样,属于类本身,而不属于哪个类的一个对象。调用一个被定义为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 }

运行结果:

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

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:"类工厂模式"改写SqlHelper

下一篇:C#中如何计算时间差?