天天看點

C# 靜态類與非靜态類差別特點

差別

靜态類與非靜态類的重要差別在于==靜态類不能執行個體化==,也就是說,不能使用 new 關鍵字建立靜态類類型的變量。在聲明一個類時使用static關鍵字,具有兩個方面的意義:首先,它防止程式員寫代碼來執行個體化該靜态類;其次,它防止在類的内部聲明任何執行個體字段或方法。

特點

1、靜态類中隻能包含 靜态成員(構造方法、字段、屬性),在靜态類中無法執行個體化

下面這些是測試

1.1 靜态類中聲明靜态變量

錯誤示範

C# 靜态類與非靜态類差別特點

執行個體成員就是需要執行個體化以後才能用的(我這個類要New才能用)

我們給這個變量加上static以後就可以用了,變成靜态變量了

C# 靜态類與非靜态類差別特點

1.2 靜态類中聲明靜态方法

我們在靜态類中搞一個帶參函數

C# 靜态類與非靜态類差別特點

加個static

C# 靜态類與非靜态類差別特點

我們看下如何輸出靜态方法和靜态變量,把上面兩個輸出一下

StaticClass1.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace StatacTest
{
    public static class StaticClass1
    {
        public static string name = "lucky";

        public static int returnAge(int age)
        {
            return age; 
        }
    }
}           

Program.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace StatacTest
{
    class Program
    {
        static void Main(string[] args)
        {
            //輸出靜态類中的靜态變量和靜态方法
            Console.WriteLine(StaticClass1.returnAge(6));
            Console.WriteLine(StaticClass1.name);
        }
    }
}
           
C# 靜态類與非靜态類差別特點

2、在非靜态類中可以聲明靜态類成員

NoStaticClass.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace StatacTest
{
    class NoStaticClass
    {
        public static char sex='男';
        public static int PrintTel(int tel)
        {
            return tel;
        }
    }
}
           
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace StatacTest
{
    class Program
    {
        static void Main(string[] args)
        {
      
            //輸出非靜态類中的靜态變量和靜态方法
            Console.WriteLine(NoStaticClass.sex);
            Console.WriteLine(NoStaticClass.PrintTel(66666666));
        }
    }
}
           
C# 靜态類與非靜态類差別特點

我們把NoStaticClass.cs裡面的static去掉

C# 靜态類與非靜态類差別特點

在輸出腳本上馬上就報錯了

C# 靜态類與非靜态類差別特點

需要執行個體化以後才能搞

C# 靜态類與非靜态類差別特點

繼續閱讀