目录
5. protected internal(受保护的内部的):
Unity中,包含以下修改类、方法、变量和属性的修饰符:
1. public(公共的):
public class MyClass
{
public int myVariable;
public void MyMethod()
{
// Method body
}
}
⚠️:`public` 修饰符表示成员(变量、方法、属性等)是公共的,可以从任何位置访问。
2. private(私有的):
public class MyClass
{
private int myVariable;
private void MyMethod()
{
// Method body
}
}
⚠️:`private` 修饰符表示成员只能在定义它的类内部访问,其他类无法直接访问。
3. protected(受保护的):
public class MyBaseClass
{
protected int myVariable;
protected void MyMethod()
{
// Method body
}
}
public class MyDerivedClass : MyBaseClass
{
void AnotherMethod()
{
myVariable = 10; // 可以在派生类中访问基类的 protected 成员
MyMethod(); // 可以在派生类中调用基类的 protected 方法
}
}
⚠️:`protected` 修饰符表示成员可以在定义它的类内部以及该类的派生类中访问,但无法在其他类中直接访问。
4. internal(内部的):
internal class MyClass
{
internal int myVariable;
internal void MyMethod()
{
// Method body
}
}
⚠️:`internal` 修饰符表示成员可以在同一程序集中的任何位置访问,但对于不在同一程序集中的类来说,该成员是不可见的。
5. protected internal(受保护的内部的):
public class MyClass
{
protected internal int myVariable;
protected internal void MyMethod()
{
// Method body
}
}
⚠️:`protected internal` 修饰符结合了 `protected` 和 `internal` 的行为,表示成员可以在同一程序集中的任何位置访问,也可以在派生类中访问。
6. static(静态的):
public class MyClass
{
public static int myVariable;
public static void MyMethod()
{
// Method body
}
}
⚠️:`static` 修饰符表示成员属于类本身,而不是类的实例。可以通过类名直接访问静态成员,无需创建类的实例。
7. const(常量):
public class MyClass
{
public const float PI = 3.14159f;
}
⚠️:`const` 修饰符用于声明常量,即一旦赋值后就不能更改的值。常量在声明时必须进行初始化,并且只能是基本数据类型或枚举类型。
8. abstract(抽象的):
public abstract class MyBaseClass
{
public abstract void MyMethod();
}
public class MyDerivedClass : MyBaseClass
{
public override void MyMethod()
{
// Method body
}
}
⚠️:`abstract` 修饰符用于声明抽象类和抽象方法。抽象类不能被实例化,只能被继承。抽象方法在抽象类中声明,需要在派生类中实现。
9. virtual(虚拟的):
public class MyBaseClass
{
public virtual void MyMethod()
{
// Method body
}
}
public class MyDerivedClass : MyBaseClass
{
public override void MyMethod()
{
// Method body
}
}
⚠️:`virtual` 修饰符用于声明虚拟方法。虚拟方法可以在派生类中被重写(使用 `override` 关键字),从而改变其行为。
10. override(重写):
public class MyBaseClass
{
public virtual void MyMethod()
{
// Method body
}
}
public class MyDerivedClass : MyBaseClass
{
public override void MyMethod()
{
// Method body
}
}
⚠️:`override` 修饰符用于在派生类中重写基类的虚拟方法。重写方法必须具有与基类方法相同的名称、返回类型和参数列表。
11. sealed(密封的):
public class MyBaseClass
{
public virtual void MyMethod()
{
// Method body
}
}
public sealed class MyDerivedClass : MyBaseClass
{
public override void MyMethod()
{
// Method body
}
}
⚠️:`sealed` 修饰符用于防止派生类对某个类或方法进行进一步的继承或重写。使用 `sealed` 修饰的类不能作为基类,使用 `sealed` 修饰的方法不能被重写。
12. readonly(只读的):
public class MyClass
{
public readonly int myVariable;
public MyClass(int value)
{
myVariable = value;
}
}
⚠️:`readonly` 修饰符用于声明只读字段。只读字段的值只能在声明时或构造函数中进行初始化,之后无法修改。
13. volatile(易变的):
public class MyClass
{
public volatile bool flag;
}
⚠️:`volatile` 修饰符用于声明易变字段。易变字段的访问不会被编译器优化,确保在多线程环境下正确地读取和写入该字段。
14. extern(外部的):
public class ExternalClass
{
[DllImport("myLibrary.dll")]
public static extern void MyMethod();
}
⚠️:`extern` 修饰符用于声明外部方法。外部方法是通过外部库(如动态链接库)提供的函数,使用 `extern` 声明后,可以在C#代码中调用该方法。
15. event(事件):
public class EventExample
{
public event Action OnEvent;
public void TriggerEvent()
{
if (OnEvent != null)
{
OnEvent.Invoke();
}
}
}
⚠️:`event` 修饰符用于声明事件。事件是一种特殊的委托,允许类通知其他类在特定情况下发生的事件。