藍鷗Unity開發基礎——靜态類
一、靜态類
靜态類需要靜态修飾符——關鍵詞static
用static修飾的成員時靜态成員
靜态成員隻能由類來調用
用static修飾的類是靜态類
靜态類不能執行個體化,隻能包含靜态成員和const常量
![](https://img.laitimes.com/img/_0nNw4CM6IyYiwiM6ICdiwiIyVGduV2QvwVe0lmdhJ3ZvwFM38CXlZHbvN3cpR2Lc1TPB10QGtWUCpEMJ9CXsxWam9CXwADNvwVZ6l2c052bm9CXUJDT1wkNhVzLcRnbvZ2LcZXUYpVd1kmYr50MZV3YyI2cKJDT29GRjBjUIF2LcRHelR3LcJzLctmch1mclRXY39TM3gDOxgDMwEjMwkDM2EDMy8CX0Vmbu4GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.jpg)
關于靜态類的具體使用方式,我們用代碼進行示範:
using System;
namespace Lesson_17
{
//靜态 static
//靜态的字段,屬性或者方法,隻能由類調用,不能夠由執行個體調用
//使用類建立對象的過程叫做執行個體化,對象也可以稱為執行個體
//靜态類
//靜态類中,隻能包含靜态的成員(字段,屬性,方法),const常量
public static class A{
public static int i;
// public A(){
// }
//靜态方法
public static void Test(){
Console.WriteLine ("Test");
}
}
class MainClass
{
public static void Main (string[] args)
{
//直接使用類名進行調用靜态成員
// A.i = 10;
// Console.WriteLine (A.i);
// A.Test ();
//未加靜态修飾符調用方式
// A a = new A ();
// a.i = 10;
// Console.WriteLine (a.i);
//在記憶體中一共有五個區域
//1、堆區——需要程式員手動開辟并管理記憶體
//2、棧區——有系統自動完成記憶體管理
//3、靜态區(全局區)——我們要講解的
//4、常量區——用于存放常量
//5、代碼區——存在程式運作所需要的代碼
}
}
}
構造方法也可以設定為靜态
靜态構造不能有參數和通路修飾符
不管是不是靜态類,都可以有靜态構造
靜态構造會在第一次執行個體化或調用靜态成員時調用
關于靜态構造方法具體使用方式,我們用代碼進行示範:
using System;
namespace Lesson_17
{
//靜态 static
//靜态的字段,屬性或者方法,隻能由類調用,不能夠由執行個體調用
//使用類建立對象的過程叫做執行個體化,對象也可以稱為執行個體
//靜态類
//靜态類中,隻能包含靜态的成員(字段,屬性,方法),const常量
public static class A{
public static int i;
// public A(){
// }
//1、靜态構造方法前不允許添加通路修飾符
//2、靜态構造方法可以存在于靜态類中,也可以在普通類中
//靜态構造方法
//靜态構造方法會在首次通路類的靜态成員時調用
static A(){
Console.WriteLine ("A的靜态構造方法");
}
//靜态方法
public static void Test(){
Console.WriteLine ("Test");
}
}
public class B{
public static int age;
//普通類中的靜态構造方法
//靜态構造會在建立對象并初始化之前調用
static B(){
Console.WriteLine ("B的靜态構造方法");
}
}
class MainClass
{
public static void Main (string[] args)
{
//直接使用類名進行調用靜态成員
A.i = 10;
Console.WriteLine (A.i);
A.Test ();
B b=new B();
// B.age = 10;
//未加靜态修飾符調用方式
// A a = new A ();
// a.i = 10;
// Console.WriteLine (a.i);
//在記憶體中一共有五個區域
//1、堆區——需要程式員手動開辟并管理記憶體
//2、棧區——有系統自動完成記憶體管理
//3、靜态區(全局區)——我們要講解的
//4、常量區——用于存放常量
//5、代碼區——存在程式運作所需要的代碼
}
}
}