声明
本文内容来自微软 MVP solenovex 的视频教程——真会C#?- 第3章 创建类型,大致和第 1 课—— class - 字段和方法 对应。可在 GitHub 中查看 C# 视频教程的配套PPT
本文主要包括以下内容:
- Fields(字段)
- Methods(方法)
Class(类)
Class(类) 是最常见的引用类型。类的成员包括在类中声明的所有成员,以及在该类的继承层次结构中的所有类中声明的所有成员(构造函数和析构函数除外)。 基类中的私有成员被继承,但不能从派生类访问。
class YourClassName
{
}
下图列出类或结构中可包含的成员类型:
class members.jpgFields(字段)
字段是类或结构的成员,它是一个变量。
class Octopus
{
string name;
public int Age = 10;
}
字段修饰符 readonly
readonly 修饰符防止字段在构造之后被改变,readonly 字段只能在声明的时候被赋值,或在构造函数里被赋值。
字段初始化
字段可以可选初始化,未初始化的字段有一个默认值;字段的初始化在构造函数之前运行。
Methods(方法)
方法是包含一系列语句的代码块。 程序通过调用该方法并指定任何所需的方法参数使语句得以执行。 在 C# 中,每个执行的指令均在方法的上下文中执行。 Main 方法是每个 C# 应用程序的入口点,并在启动程序时由公共语言运行时 (CLR) 调用。
方法签名
通过指定访问级别(如 public 或 private )、可选修饰符(如 abstract 或 sealed )、返回值、方法的名称以及任何方法参数,在类 或结构中声明方法。 这些部件一起构成方法的签名。类型内方法的签名必须唯一。
Expression-bodied methods (C# 6)(表达式主体定义的成员)
通过表达式主体定义,可采用非常简洁的可读形式提供成员的实现。 只要任何支持的成员(如方法或属性)的逻辑包含单个表达式,就可以使用表达式主体定义。
int Foo (int x) => x * 2;
Overload(方法的重载)
类型里的方法可以进行重载(允许多个同名的方法同时存在),只要这些方法的签名不同即可。
void Foo (int x) {...}
void Foo (double x) {...}
void Foo (int x, float y) {...}
void Foo (float x, int y) {...}
按值传递 versus 按引用传递
参数是按值传递的还是按引用传递的,也是方法签名的一部分。
void Foo (int x) {...}
void Foo (ref int x) {...} // OK so far
void Foo (out int x) {...} // Compile-time error
local-functions(本地函数)
从 C# 7.0 开始,C# 支持本地函数。 本地函数是一种嵌套在另一成员中的类型的私有方法。 仅能从其包含成员中调用它们。不地函数不可以使用 static 修饰符。
void WriteCubes()
{
Console.WriteLine (Cube (3));
Console.WriteLine (Cube (4));
Console.WriteLine (Cube (5));
int Cube (int value) => value * value * value;
}
参考
Classes (C# Programming Guide)
Methods (C# Programming Guide)
Expression-bodied members (C# programming guide)
网友评论