Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/296.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#类/方法修饰符_C#_Class_Methods_Modifier - Fatal编程技术网

C#类/方法修饰符

C#类/方法修饰符,c#,class,methods,modifier,C#,Class,Methods,Modifier,我正在尝试用类/方法修饰符制作电子表格。可以找到电子表格本身,尽管我有一些问题: 1) 正如我所读到的,方法也可以是密封的,但是这样做的目的是什么呢?保护方法不被重写 2) 在abstract类中,字段是否也必须是abstract 3) virtual方法能否在定义的对象/类中具有主体 sealed继承链中的方法sealed方法还需要有override关键字 字段不能是抽象的。字段是类级别的变量。你不能忽略这一点。属性和方法可以是抽象的,但不需要 virtual和abstract方法之间的区别在

我正在尝试用类/方法修饰符制作电子表格。可以找到电子表格本身,尽管我有一些问题:

1) 正如我所读到的,方法也可以是密封的,但是这样做的目的是什么呢?保护方法不被重写

2) 在
abstract
类中,字段是否也必须是
abstract

3)
virtual
方法能否在定义的对象/类中具有主体

  • sealed
    继承链中的方法
    sealed
    方法还需要有override关键字

  • 字段不能是抽象的。字段是类级别的变量。你不能忽略这一点。属性和方法可以是抽象的,但不需要

  • virtual
    abstract
    方法之间的区别在于virtual方法有一个实现。您可以在派生类中重写该实现

  • sealed
    继承链中的方法
    sealed
    方法还需要有override关键字

  • 字段不能是抽象的。字段是类级别的变量。你不能忽略这一点。属性和方法可以是抽象的,但不需要

  • virtual
    abstract
    方法之间的区别在于virtual方法有一个实现。您可以在派生类中重写该实现

  • 否-不存在抽象字段,类是抽象的,这意味着它不能被实例化,但在其上定义的字段是派生非抽象类布局的一部分
  • 否-不存在抽象字段,类是抽象的,这意味着它不能被实例化,但在其上定义的字段是派生非抽象类布局的一部分

  • 1:是的,就是这样;阻止子类中的虚拟方法再次被重写

    2:字段从不抽象;字段是实现;在抽象类中,没有任何东西必须是抽象的


    3:是的,虚拟修饰语不同于抽象修饰语。两者都代表一个虚拟方法——区别完全在于基类中是否有实现:是的,正是这样;阻止子类中的虚拟方法再次被重写

    2:字段从不抽象;字段是实现;在抽象类中,没有任何东西必须是抽象的


    3:是的,虚拟修饰语不同于抽象修饰语。两者都代表一个虚拟方法-区别完全在于基类中是否有实现

    您可以全部尝试,看看会发生什么2)字段声明保留存储,而没有机会定义或重新定义交互。重写发生在交互上,比如方法和属性getter/setter。一开始,当一个属性看起来像是存储时,您是否可以覆盖该属性似乎不太清楚。如果是这样的话,请记住这只是C#的一个细节;当你声明myProp{get;set;}时,它会自动为你创建一个支持字段,并且会发生与此相反的交互。你可以全部尝试,看看会发生什么2)字段声明会保留存储空间,而没有机会定义或重新定义交互。重写发生在交互上,比如方法和属性getter/setter。一开始,当一个属性看起来像是存储时,您是否可以覆盖该属性似乎不太清楚。如果是这样的话,请记住这只是C#的一个细节;当您声明myProp{get;set;}时,它会自动为您创建一个支持字段,并针对该字段进行交互。