📜  C#static关键字

📅  最后修改于: 2020-10-31 02:56:07             🧑  作者: Mango

C#static

在C#中,static是属于类型而不是实例的关键字或修饰符。因此,不需要实例来访问静态成员。在C#中,static可以是字段,方法,构造函数,类,属性,运算符和事件。

注意:索引器和析构函数不能为静态。

C#static关键字的优势

内存高效:现在,我们无需创建实例来访问静态成员,因此可以节省内存。而且,它属于该类型,因此每次创建实例时都不会获取内存。

C#static字段

声明为静态的字段称为静态字段。与实例字段每次创建对象时都会获取内存的实例字段不同,内存中仅创建了一个静态字段副本。它与所有对象共享。

它用于引用所有对象的公共属性,例如对于Account来说是rateOfInterest,对于Employee来说是companyName。

C#static字段示例

让我们看一下C#中static字段的简单示例。

using System;
   public class Account
    {
        public int accno; 
        public String name;
        public static float rateOfInterest=8.8f;
        public Account(int accno, String name)
        {
            this.accno = accno;
            this.name = name;
        }
        
        public void display()
        {
            Console.WriteLine(accno + " " + name + " " + rateOfInterest);
        }
   }
   class TestAccount{
       public static void Main(string[] args)
        {
         Account a1 = new Account(101, "Sonoo");
            Account a2 = new Account(102, "Mahesh");
            a1.display();
            a2.display();

        }
    }

输出:

101 Sonoo 8.8
102 Mahesh 8.8

C#static字段示例2:更改static字段

如果更改static字段的值,它将应用于所有对象。

using System;
   public class Account
    {
        public int accno; 
        public String name;
        public static float rateOfInterest=8.8f;
        public Account(int accno, String name)
        {
            this.accno = accno;
            this.name = name;
        }
        
        public void display()
        {
            Console.WriteLine(accno + " " + name + " " + rateOfInterest);
        }
   }
   class TestAccount{
       public static void Main(string[] args)
        {
            Account.rateOfInterest = 10.5f;//changing value
            Account a1 = new Account(101, "Sonoo");
            Account a2 = new Account(102, "Mahesh");
            a1.display();
            a2.display();

        }
    }

输出:

101 Sonoo 10.5
102 Mahesh 10.5

C#static字段示例3:计数对象

让我们看一下C#中static关键字的另一个示例,该示例对对象进行计数。

using System;
   public class Account
    {
        public int accno; 
        public String name;
        public static int count=0;
        public Account(int accno, String name)
        {
            this.accno = accno;
            this.name = name;
            count++;
        }
        
        public void display()
        {
            Console.WriteLine(accno + " " + name);
        }
   }
   class TestAccount{
       public static void Main(string[] args)
        {
            Account a1 = new Account(101, "Sonoo");
            Account a2 = new Account(102, "Mahesh");
            Account a3 = new Account(103, "Ajeet");
            a1.display();
            a2.display();
            a3.display();
            Console.WriteLine("Total Objects are: "+Account.count);
        }
    }

输出:

101 Sonoo 
102 Mahesh 
103 Ajeet
Total Objects are: 3