@@ -529,53 +529,116 @@ Console.WriteLine(b);
529
529
// True
530
530
```
531
531
532
- ## 类
532
+ 类
533
+ ---
533
534
534
- ### 默认情况(默认情况即为内部类)
535
+ ### 成员变量
535
536
536
- ```
537
- //下面两个类相同,默认情况下,类声明为内部类,即只能在当前项目中的代码才能访问它
538
- class MyClass
537
+ ``` cs
538
+ public class MyClass
539
539
{
540
- ...
540
+ // 私有变量
541
+ private int myVariable ;
542
+ // 公有属性
543
+ public string MyProperty { get ; set ; }
541
544
}
542
- internal class MyCalss
545
+
546
+ ```
547
+
548
+ ### 构造函数
549
+
550
+ ``` cs
551
+ public class MyClass
543
552
{
544
- ...
553
+ // 默认构造函数
554
+ public MyClass ()
555
+ {
556
+ // 初始化代码
557
+ }
558
+ // 自定义构造函数
559
+ public MyClass (int value )
560
+ {
561
+ // 使用传入的值初始化
562
+ }
545
563
}
546
564
```
547
565
548
- ### 公共类
566
+ ### 方法
549
567
550
- ```
568
+ ``` cs
551
569
public class MyClass
552
570
{
553
- ...
571
+ // 无返回值方法
572
+ public void MyMethod ()
573
+ {
574
+ // 方法体
575
+ }
576
+ // 有返回值方法
577
+ public int Add (int a , int b )
578
+ {
579
+ return a + b ;
580
+ }
554
581
}
555
582
```
556
583
557
- ### 抽象类与密封类
584
+ ### 属性
558
585
586
+ ``` cs
587
+ public class MyClass
588
+ {
589
+ private string myField ;
590
+
591
+ public string MyProperty
592
+ {
593
+ get { return myField ; }
594
+ set { myField = value ; }
595
+ }
596
+ }
559
597
```
560
- //抽象类(abstract)与密封类(sealed)为互斥关系,抽象类不能实例化,允许继承,可以有抽象成员,密封类不允许继承
561
- //抽象类与密封类都可以声明为公共类(public)和内部类(internal)
562
- public abstract class MyClass
598
+
599
+ ### 接口
600
+
601
+ ``` cs
602
+ public interface IMyInterface
563
603
{
564
- ...
604
+ void MyMethod (); // 接口方法声明
565
605
}
566
- public sealed class MyClass
606
+
607
+ public class MyClass : IMyInterface
567
608
{
568
- ...
609
+ public void MyMethod () // 实现接口方法
610
+ {
611
+ // 实现代码
612
+ }
569
613
}
570
614
```
571
615
572
- ### 继承
616
+ ### 静态成员
573
617
618
+ ``` cs
619
+ public class MyClass
620
+ {
621
+ public static int StaticVariable = 10 ;
622
+ public static void StaticMethod ()
623
+ {
624
+ // 静态方法体
625
+ }
626
+ }
574
627
```
575
- /*
576
- 注意,在C#的类定义中,只能有一个基类。如果继承了一个抽象类,就必须实现所继承的所有抽象成员(除非派生类也是抽象的)。
577
- 编译器不允许派生类的可访问性高于基类。也就是说,内部类可以继承于一个公共基类,但公共类不能继承于一个内部基类。因此,下述代码是合法的:
578
- */
628
+
629
+ ### 继承
630
+ <!-- rehype:wrap-class=row-span-4-->
631
+
632
+ 注意
633
+
634
+ - 在类定义中,只能有一个基类
635
+ - 继承了一个抽象类,必须实现所继承的所有抽象成员(除非派生类也是抽象的)
636
+ - 编译器不允许派生类的可访问性高于基类
637
+ - 内部类可以继承于一个公共基类,但公共类不能继承于一个内部基类
638
+
639
+ 因此,下述代码是合法的:
640
+
641
+ ``` cs
579
642
public class MyBase
580
643
{
581
644
// Class members.
@@ -584,7 +647,11 @@ internal class MyClass : MyBase
584
647
{
585
648
// Class members.
586
649
}
587
- //但下述代码不能编译:
650
+ ```
651
+
652
+ 下述代码不能编译:
653
+
654
+ ``` cs
588
655
internal class MyBase
589
656
{
590
657
// Class members.
@@ -593,12 +660,92 @@ public class MyClass : MyBase
593
660
{
594
661
// Class members.
595
662
}
596
- /*
597
- 如果没有使用基类,被定义的类就只继承于基类 System.Object(它在 C#中的别名是 object)。毕竟,在继承层次结构中,所有类的根都是 System.Object。
598
- */
599
663
```
600
664
665
+ 如果没有使用基类,被定义的类就只继承于基类 System.Object(它在 C# 中的别名是 object)。在继承层次结构中,所有类的根都是 ` System.Object `
601
666
667
+ ### 访问修饰符
668
+ <!-- rehype:wrap-class=row-span-2-->
669
+
670
+ :-- | :--
671
+ :-- | :--
672
+ public | 公有,可从任何位置访问
673
+ private | 私有,只能在当前类中访问
674
+ protected | 受保护,只能在当前类和派生类中访问
675
+ internal | 内部,只能在同一程序集中访问
676
+ protected internal | 受保护的内部,可以在同一程序集中的任何地方访问,以及派生类中
677
+ private protected | 私有保护,只能在同一程序集中的派生类中访问
678
+
679
+ ### 公共类
680
+
681
+ ``` cs
682
+ public class MyClass
683
+ {
684
+ ...
685
+ }
686
+ ```
687
+
688
+ 添加 ` public ` 声明为公共类
689
+
690
+ ### 私有类
691
+
692
+ ``` cs
693
+ private class MyClass
694
+ {
695
+ ...
696
+ }
697
+ ```
698
+
699
+ 添加 ` public ` 声明为公共类
700
+
701
+ ### 命名约定
702
+
703
+ - 类名使用 PascalCase 格式
704
+ - 成员变量和方法名使用 camelCase 格式
705
+ - 公有成员和类型名应该使用有意义的名字
706
+
707
+ ### 默认情况(默认情况即为内部类)
708
+ <!-- rehype:wrap-class=row-span-2-->
709
+
710
+ ``` cs
711
+ class MyClass
712
+ {
713
+ ...
714
+ }
715
+ internal class MyCalss
716
+ {
717
+ ...
718
+ }
719
+ ```
720
+
721
+ 上面两个类相同,声明为内部(` internal ` )类,只能在当前项目中的代码才能访问它
722
+
723
+ ---
724
+
725
+ - 抽象类与密封类为互斥关系
726
+ - 抽象类不能实例化,允许继承
727
+ - 可以有抽象成员,密封类不允许继承
728
+ - 都可以声明为公共类(public)和内部类(internal)
729
+
730
+ ### 抽象类与密封类
731
+
732
+ #### 抽象类(abstract)
733
+
734
+ ``` cs
735
+ public abstract class MyClass
736
+ {
737
+ ...
738
+ }
739
+ ```
740
+
741
+ #### 密封类(sealed
742
+
743
+ ``` cs
744
+ public sealed class MyClass
745
+ {
746
+ ...
747
+ }
748
+ ```
602
749
603
750
杂项
604
751
-----------
0 commit comments