静态和非静态的区别

声明 静态类和非静态类

1.非静态类中:既可以定义静态字段、静态属性、静态方法,也可以定义非静态(实例成员)字段、非静态(实例成员)属性、非静态(实例成员)方法、

 1 using System;
 2 using System.Collections.Generic;
 3 using System.Linq;
 4 using System.Text;
 5 using System.Threading.Tasks;
 6 
 7 namespace 静态和非静态的区别
 8 {
 9 
10     /**
11      * 非静态类
12      * 既可以定义静态字段、静态属性、静态方法。
13      * 也可以定义非静态(实例成员)字段、非静态(实例成员)属性、非静态(实例成员)静态方法。
14      **/
15 
16     //非静态类
17     public class Person1
18     {
19         //实例成员(非静态)
20         private int _id;
21 
22         //实例属性(非静态)
23         public int ID
24         {
25             get { return _id; }
26             set { _id = value; }
27         }
28 
29         //实例方法(非静态)
30         public void Showinfo()
31         {
32         }
33 
34 
35 /*--------------------------------------------------------------------*/
36 
37 
38         //静态字段
39         private static string _name;
40 
41         //静态属性
42         public static string Name
43         {
44             get 
45             {
46                 return _name;
47             }
48             set
49             {
50                 _name = value;
51             }
52         }
53         //静态方法
54         public static void Sho()
55         {
56  
57         }
58     }
59 }

 

2.静态类中:只可以定义静态字段、静态属性、静态方法。

 1 using System;
 2 using System.Collections.Generic;
 3 using System.Linq;
 4 using System.Text;
 5 using System.Threading.Tasks;
 6 
 7 namespace 静态和非静态的区别
 8 {
 9 
10     /**
11      * 静态类
12      * 只能定义静态字段、静态属性、静态方法。
13      **/
14 
15     //静态类
16     public static class Person2
17     {
18         /**
19          * 静态类中不能定义非静态成员
20          * **/
21         ////实例成员(非静态)
22         //private int _id;
23 
24         ////实例属性(非静态)
25         //public int ID
26         //{
27         //    get { return _id; }
28         //    set { _id = value; }
29         //}
30 
31         ////实例方法(非静态)
32         //public void Showinfo()
33         //{
34         //}
35 
36 /*--------------------------------------------------------------------*/
37 
38         //静态字段
39         private static string _name;
40 
41         //静态属性
42         public static string Name
43         {
44             get
45             {
46                 return _name;
47             }
48             set
49             {
50                 _name = value;
51             }
52         }
53         //静态方法
54         public static void Sho()
55         {
56         }
57     }
58 }

调用 静态类和非静态类

  1.非静态类

    :使用实例化的对象来调用属性和方法。

1             // 非静态类
2             // 使用实例化的对象来调用属性和方法。
3             Person1 p = new Person1();
4             p.ID = 20;
5             p.Showinfo();

  2.静态类

    :直接使用类名来调用属性和方法。

1             // 静态类
2             // 直接使用类名来调用属性和方法。
3             Person2.Name = "KaiDi";
4             Person2.Sho();

为什么使用静态类?

  1.如果想要你的类当做工具类去使用,这个时候可以使用静态类。因为不需要实例化对象,直接可以用类名调用。

  2.静态类在整个项目中资源共享,除非重新编译,否则静态类不会改变。QQ只登陆一次,如果在QQ中跳转到其他模块,就不需要在进行登录。只有在程序结束的时候,静态了才会释放资源。

完成。

原文地址:https://www.cnblogs.com/KTblog/p/4435417.html