zl程序教程

您现在的位置是:首页 >  后端

当前栏目

C# (初入江湖)-修饰符

c# 修饰符 江湖 初入
2023-09-11 14:14:49 时间

C# (初入江湖)-修饰符

修饰符

访问权限修饰符

访问控制符同类中访问同程序集的子类同程序集的非子类不同程序集的子类不同程序集的非子类
public
protected internal
protected
internal
private

权限修饰符外还有几个修饰符,这几个修饰符可以和上面五个权限修饰符一起用,一般写在权限修饰符后面

  • sealed(密封):修饰类的时候表示该类不能够被继承,修饰方法时表示该方法不能被重写(有些像java中的final)
// 以下案例中,B可以继承A,但是没有类可以再继承B了
class A {}
sealed class B : A {}
  • abstract(抽象的):可以修饰类也可以修饰成员
    • 修饰类的时候表示该类为抽象类,不能够创建该类的实例
    • 修饰方法的时候表示该方法需要由子类来实现,如果子类没有实现该方法那么子类必须同样是抽象类
    • 抽象类中可能有抽象方法和非抽象方法(抽象方法子类继承后必须要复写)
    • abstract 的方法体,不用{ } ,用 ;
abstract class Animal
{
    // 抽象方法 ,吃饭,子类继承后必须复写
    public abstract void Eat();
    // 非抽象方法,子类可不复写
    public void Play(){ };
}

class Dog : Animal
{
    public override void Eat(){ Console.WriteLine(".....")};
}
  • virtual(虚方法):修饰方法成员,子类继承后可以复写被该修饰符修饰的方法(非必须复写)
  • override(复写):一般用于复写父类中用virtual 修改的方法
class Animal
{
    // 子类可自己选择是否需要 复写
    public virtual void Eat();
}

class Dog : Animal
{
    // 复写 父类的吃饭方法
    public override void Eat(){ Console.WriteLine(".....")};
}
  • partial(部分的) :仅用来修饰类;可以将一个类分成几部分写在不同文件中,最终编译时将合并成一个文件,但各个部分不能分散在不同程序集中。在一个class特别大,由几个人合作写时这功能特别有用
  • static(静态的):修饰类时表示该类是静态类,不能够实例化该类的对象,该类的成员为都为静态的。同时非静态方法也无法调用静态方法,但静态的方法可以调用非静态的方法。类成员只能通过【类.成员名】的方式访问
// 用在类上面
public static class Person
{
    public static void EatHotDog() { /*...*/ }
}

// 在非静态类中,写静态方法
class Person
{
    //静态属性
    static string name;
    // 测试
    static void test1()
    {

    }
}
  • const(修饰常量):定义常量,赋值时初始化,并且不能改变值。只能用于基本类型和string (可以用来修改局部变量)
const string Language = "C#";
  • readonly(只读): 修饰字段意味着只能读取该字段的值而不能给字段赋值。只能在声明期间或在同一个类的构造函数中向字段赋值(反正只能赋一次值,并且只能修饰字段)
class Person
{
    private readonly int _age;
    Person(int age)
    {
    // 构造方法赋值
        _age = age;
    }
    void ChangeAge()
    {
      // 此处会执行会报错,无法为_age赋值
        _age = 33333;
    }
}

更多好看的内容好玩的案例请关注我的微信公众号: 程序猿知秋