unity的C#学习——访问修饰符与静态修饰符
创始人
2025-06-01 16:03:02
0

访问修饰符——变量、方法的私有化与公有化

在C#中,可以使用访问修饰符来指定变量和方法的访问级别,从而决定它们能否被其他类或对象访问。常用的访问修饰符有以下四种:

  1. public:公共访问修饰符,表示该变量或方法可以被所有类和对象访问。
  • 构造函数通常就需要使用public访问修饰符(还有的使用static静态修饰符),因为当你创建一个类的对象时,你需要调用该类的构造函数来初始化对象的成员变量和属性等信息。如果构造函数的访问修饰符不是public,那么在类的外部就无法调用该构造函数,也就无法创建该类的对象。
  • unity中的编辑器也会识别public变量并显示在Inspector窗口中,从而在对应脚本选项卡内就能对该变量进行修改设置,修改的值会被保存到c#脚本文件当中。
  1. private:私有访问修饰符,表示该变量或方法只能被定义它们的类中的其他成员访问。

  2. protected:受保护访问修饰符,表示该变量或方法只能被定义它们的类及其子类中的其他成员访问。

  3. internal:内部访问修饰符,表示该变量或方法只能被当前程序集中的其他类和对象访问。

例如,下面的代码演示了如何使用访问修饰符来控制变量和方法的访问级别:

public class MyClass
{public int publicVar; // 公共变量private int privateVar; // 私有变量protected int protectedVar; // 受保护变量internal int internalVar; // 内部变量public void PublicMethod() // 公共方法{// 方法实现}private void PrivateMethod() // 私有方法{// 方法实现}protected void ProtectedMethod() // 受保护方法{// 方法实现}internal void InternalMethod() // 内部方法{// 方法实现}
}

在上面的代码中,MyClass类包含了四个不同访问级别的变量和方法。可以看到,公共变量和方法使用public访问修饰符声明,私有变量和方法使用private访问修饰符声明,受保护变量和方法使用protected访问修饰符声明,而内部变量和方法使用internal访问修饰符声明。这样,其他类或对象就可以根据访问修饰符的不同来访问或者不能访问这些成员。


静态修饰符——变量、方法的归属权变更

在C#中,静态修饰符可以用来指定类成员是静态的,也就是说它们属于类而不属于对象。当一个类成员被声明为静态时,可以直接通过类名来访问它,而不需要先创建类的实例。

静态修饰符可以用于以下几种类成员:

  1. 静态字段:静态字段是类的字段,而不是实例的字段,它们只有一个副本,被类的所有实例共享

  2. 静态方法:静态方法是类的方法,而不是实例的方法,它们不需要通过类的实例来调用,可以直接通过类名调用

  3. 静态构造函数:静态构造函数是在类的第一个实例被创建之前自动调用的,用于初始化静态数据

例如,下面的代码演示了如何使用静态修饰符来声明静态字段和静态方法:

public class MyClass
{public int instanceVar; // 实例变量public static int staticVar; // 静态变量public void InstanceMethod() // 实例方法{// 方法实现}public static void StaticMethod() // 静态方法{// 方法实现}
}

在上面的代码中,MyClass类包含了一个实例变量instanceVar和一个静态变量staticVar。实例方法InstanceMethod只能通过类的实例来调用,而静态方法StaticMethod可以通过类名来调用。

注意:静态方法只能访问静态成员,不能访问实例成员。同时,静态方法也不能访问实例的this指针。

静态构造函数和一般构造函数的区别

C#中的静态构造函数和一般构造函数的主要区别如下:

  1. 调用时机不同:静态构造函数在类被加载时自动调用,而一般构造函数在每次创建实例对象时调用。

  2. 调用方式不同:静态构造函数没有访问修饰符,也不能被显式调用,而一般构造函数可以通过类的实例来调用。

  3. 作用域不同:静态构造函数只能访问静态成员,而一般构造函数可以访问所有成员。

  4. 参数不同:静态构造函数没有参数(因为无法显示调用,且只能访问静态成员),而一般构造函数可以有任意个参数。

  5. 返回值不同:静态构造函数没有返回值,而一般构造函数没有返回值类型声明(连void也不需要添加),因为它们总是返回创建的实例对象本身。

以下是一个示例代码来对比静态构造函数和一般构造函数的区别:

public class MyClass
{static int staticField;int instanceField;// 静态构造函数static MyClass(){Console.WriteLine("静态构造函数被调用");staticField = 10;}// 一般构造函数public MyClass(int value){Console.WriteLine("一般构造函数被调用");instanceField = value;}
}class Program
{static void Main(string[] args){// 调用静态构造函数MyClass myClass1 = new MyClass(1);// 创建对象并调用一般构造函数MyClass myClass2 = new MyClass(2);}
}

输出结果:

静态构造函数被调用
一般构造函数被调用
一般构造函数被调用

从输出结果可以看出,静态构造函数在类被加载时自动调用;而一般构造函数在每次创建对象时调用。此外,静态构造函数只会被调用一次,而一般构造函数会被每次创建对象时调用。

相关内容

热门资讯

江城子·斗转星移玉漏频 原文... 江城子·斗转星移玉漏频 原文、翻译及赏析江城子·斗转星移玉漏频 原文、翻译及赏析1  斗转星移玉漏频...
三字经人之初全文 三字经人之初全文  三字经,在人们心中种下一粒思想的种子,慢慢生根、发芽。小编今天为大家带来三字经全...
傅佩荣详解易经64卦 傅佩荣详解易经64卦  《易经》又名《周易》,国学瑰宝,被誉为华夏诸经之首、诸经之始。  《易经》第...
文言《越州赵公救灾记》阅读练... 文言《越州赵公救灾记》阅读练习(附答案)  越州赵公救灾记  熙宁八年夏,吴越大旱。九月,资政殿大学...
文言文阅读专项训练习题及答案 文言文阅读专项训练习题及答案  元行钦,幽州人。庄宗与梁军战,军败而溃,梁兵数百追及,攒槊围之。行钦...
《诗经》爱情解读:汉广-拒绝... 《诗经》爱情解读:汉广-拒绝泅渡的爱情  《国风·周南·汉广》是先秦现实主义诗集《诗经》中《国风·周...
端午节粽子祝福语 端午节粽子祝福语  粽子包着枣,祝你健康永不老;粽子夹着肉,愿你爱情长又久;粽子沾点糖,望你快乐幸福...
《新唐书姚南仲传》原文及注释 《新唐书姚南仲传》原文及注释  【原文】  姚南仲,华州下邽人。乾元初,擢制科①,授太子校书。迁累右...
迂公修屋文言文翻译 迂公修屋文言文翻译  迂公修屋记叙了个性吝啬的迂公篱笆破了也不修理,屋顶上的瓦片破了也不修理,修了还...
孔子《论语》全文及译文 孔子《论语》全文及译文  导语:《论语》主要记录孔子及其弟子的言行,较为集中地反映了孔子的思想,由孔...
红楼梦中薛宝钗的性格特点剖析 关于红楼梦中薛宝钗的性格特点剖析  《红楼梦》,中国古代章回体长篇小说,中国古典四大名著之一,通行本...
题燕太子丹传后原文及赏析 题燕太子丹传后原文及赏析  题燕太子丹传后  李翱〔唐代〕  荆轲感燕丹之义,函匕首入秦,劫始皇,将...
精彩名著段落摘抄 精彩名著段落摘抄  名著是指具有较高艺术价值与知名度,且包含永恒主题与经典的人物形象,能够经过时间考...
楚辞《哀时命》的原文及译文 楚辞《哀时命》的原文及译文  原文:  哀时命之不及古人兮,夫何予生之不遘时!  往者不可扳援兮,徠...
文言文《左传桓公桓公九年》原... 文言文《左传桓公桓公九年》原文及翻译  原文:  【经】九年春,纪季姜归于京师。夏四月,秋七月。冬,...
《岳阳楼记》中的通假字、一词... 《岳阳楼记》中的通假字、一词多义、古今异义、及鉴赏  《岳阳楼记》是北宋文学家范仲淹应好友巴陵郡太守...
三字经全文童声朗读 三字经全文童声朗读  导语:人生下来的时候都是好的,只是由于成长过程中,后天的学习环境不一样,性情也...
铜奔马正名阅读理解附答案 铜奔马正名阅读理解附答案  铜奔马正名  作为中国旅游标志的东汉铜奔马是1969年在甘肃武威出土的,...
三字经:汤伐夏,国号商,六百... 三字经:汤伐夏,国号商,六百载,至纣亡。  商汤姓子,名汤,又名履、天乙等,史称“汤有七名”。商族活...
《题破山寺后禅院》阅读答案及... 《题破山寺后禅院》阅读答案及翻译赏析  题破山寺后禅院  常建  清晨入古寺,初日照高林。  竹径通...