Skip to content

Commit 21dc25c

Browse files
committed
doc: update docs/cs.md #584
1 parent ea8d6b3 commit 21dc25c

File tree

1 file changed

+174
-27
lines changed

1 file changed

+174
-27
lines changed

docs/cs.md

Lines changed: 174 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -529,53 +529,116 @@ Console.WriteLine(b);
529529
// True
530530
```
531531

532-
##
532+
533+
---
533534

534-
### 默认情况(默认情况即为内部类)
535+
### 成员变量
535536

536-
```
537-
//下面两个类相同,默认情况下,类声明为内部类,即只能在当前项目中的代码才能访问它
538-
class MyClass
537+
```cs
538+
public class MyClass
539539
{
540-
...
540+
// 私有变量
541+
private int myVariable;
542+
// 公有属性
543+
public string MyProperty { get; set; }
541544
}
542-
internal class MyCalss
545+
546+
```
547+
548+
### 构造函数
549+
550+
```cs
551+
public class MyClass
543552
{
544-
...
553+
// 默认构造函数
554+
public MyClass()
555+
{
556+
// 初始化代码
557+
}
558+
// 自定义构造函数
559+
public MyClass(int value)
560+
{
561+
// 使用传入的值初始化
562+
}
545563
}
546564
```
547565

548-
### 公共类
566+
### 方法
549567

550-
```
568+
```cs
551569
public class MyClass
552570
{
553-
...
571+
// 无返回值方法
572+
public void MyMethod()
573+
{
574+
// 方法体
575+
}
576+
// 有返回值方法
577+
public int Add(int a, int b)
578+
{
579+
return a + b;
580+
}
554581
}
555582
```
556583

557-
### 抽象类与密封类
584+
### 属性
558585

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+
}
559597
```
560-
//抽象类(abstract)与密封类(sealed)为互斥关系,抽象类不能实例化,允许继承,可以有抽象成员,密封类不允许继承
561-
//抽象类与密封类都可以声明为公共类(public)和内部类(internal)
562-
public abstract class MyClass
598+
599+
### 接口
600+
601+
```cs
602+
public interface IMyInterface
563603
{
564-
...
604+
void MyMethod(); // 接口方法声明
565605
}
566-
public sealed class MyClass
606+
607+
public class MyClass : IMyInterface
567608
{
568-
...
609+
public void MyMethod() // 实现接口方法
610+
{
611+
// 实现代码
612+
}
569613
}
570614
```
571615

572-
### 继承
616+
### 静态成员
573617

618+
```cs
619+
public class MyClass
620+
{
621+
public static int StaticVariable = 10;
622+
public static void StaticMethod()
623+
{
624+
// 静态方法体
625+
}
626+
}
574627
```
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
579642
public class MyBase
580643
{
581644
// Class members.
@@ -584,7 +647,11 @@ internal class MyClass : MyBase
584647
{
585648
// Class members.
586649
}
587-
//但下述代码不能编译:
650+
```
651+
652+
下述代码不能编译:
653+
654+
```cs
588655
internal class MyBase
589656
{
590657
// Class members.
@@ -593,12 +660,92 @@ public class MyClass : MyBase
593660
{
594661
// Class members.
595662
}
596-
/*
597-
如果没有使用基类,被定义的类就只继承于基类 System.Object(它在 C#中的别名是 object)。毕竟,在继承层次结构中,所有类的根都是 System.Object。
598-
*/
599663
```
600664

665+
如果没有使用基类,被定义的类就只继承于基类 System.Object(它在 C# 中的别名是 object)。在继承层次结构中,所有类的根都是 `System.Object`
601666

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+
```
602749

603750
杂项
604751
-----------

0 commit comments

Comments
 (0)