本博文为半摘记性质
——
声明:本文内容系互联网整理收集,内容有改动。主要参考资料:
https://www.runoob.com/csharp/csharp-tutorial.html 菜鸟教程
https://docs.microsoft.com/zh-cn/dotnet/csharp/ Microsoft C#文档
零散的资料在每章节末尾给出。
————
类描述了一组有相同属性和相同方法的对象。
一个方法是把一些相关的语句组织在一起,用来执行一个任务的语句块。每一个 C# 程序至少有一个带有 Main 方法的类,要使用一个方法,需要定义方法并调用方法。
方法的定义模板:
<Access Specifier> <Return Type> <Method Name>(Parameter List)//访问修饰符;返回类型;方法名称;参数列表
{
Method Body//方法主体
} //template
——
class Shape//定义类
{
public void setWidth(int w)//定义方法
{
width = w;
}
} //example
方法可以用访问修饰符进行封装。(详见【字段】章节)
定义格式:
tatic void Main(string[] args)
{
...
}
string[ ] args 指的就是你在命令窗口输入的参数,也就是命令行参数。
方法在某种程度上相当于C语言的函数。但在正式的c#术语中区分函数和方法。在c#术语中,“函数成员”不仅包含方法,也包含类或结构的一些非数据成员,如索引器、运算符、构造函数和析构函数等,甚至还有属性。这些都不是数据成员,字段、常量和事件才是数据成员。
方法一般不返回数据,而函数通常都返回数据。现在一般不区分两者,统一叫方法。
类的 构造函数 是类的一个特殊的成员函数,是一种特殊的方法,主要用来在创建对象时初始化对象(为新对象的成员变量赋初始值),总与new运算符一起使用对该类进行实例化( 实例化对象就是调用合适的构造函数进行类的实例化)。
构造函数的名称与类的名称完全相同,它没有任何返回类型。 默认的构造函数没有任何参数。带有参数的构造函数叫做参数化构造函数,可以在创建对象的同时给对象赋初始值。
class Chinar
{
private int a = 1;
private int b = 1;
private string c = "Chinar";
private object d = 666;
//构造函数用来完成 —— 初始化工作
public Chinar() //声明构造函数,函数名与类名相同
{
//每个类,本身默认有一个。如果我们不写明这个 public Chinar()函数,系统仅调用系统默认的。
//自定义构造 public Chinar()函数后,系统只会调用自定义的 Chinar()
}
——————
//这是一个多参数的构造函数
public Chinar(int a, int b, string c, object d)
{
...
}
}
new 运算符:用于创建对象和调用构造函数(即类的实例化),格式为:
类 实例名 = new 类();
例:Shape sha = new Shape();
字段又称为“成员变量”,一般用在一个类内部做数据交互使用,通常使用private修饰。
字段的数据类型有:
访问修饰符有:
public:所有对象都可以访问;
private:对象本身在对象内部可以访问;
protected:只有该类对象及其子类对象可以访问
internal:同一个程序集的对象可以访问;
protected internal:访问限于当前程序集或派生自包含类的类型。
实例:
class Shape//定义类
{
public void setWidth(int w)//定义方法
{
width = w;
}
protected int width;//定义字段(成员变量)
protected int height;
}
属性是 C# 中的一等公民。
属性属于高级概念,在OOP(面向对象)中,主要使用属性来描述对象的静态特征(即属性是对象的一个特征)。属性一般采用public修饰。
属性(Property) 是类(class)、结构(structure)和接口(interface)的命名(named)成员。
类或结构中的成员变量或方法称为 域(Field)。属性(Property)是域(Field)的扩展,且可使用相同的语法来访问。它们使用 访问器(accessors) 让私有域的值可被读写或操作。访问器声明可包含一个 get 访问器、一个 set 访问器,或者同时包含二者。
属性的定义格式(举例):
// 声明类型为 string 的 Code 属性
public string Code
{
get//读私有域
{
return code;
}
set//写私有域
{
code = value;
}
}
使用格式为:
// 创建一个新的 Student 对象
Student s = new Student();
s.Code = "001";
属性可以被编译器自动实现。
当属性访问器中不需要任何其他逻辑时,我们可以使用自动实现的属性,它会使属性声明更加简洁。自动实现的属性在编译后,也是生成了老式的读/写属性。
public string Code{
get;set;}
键入“prop”连按两次“Tab”,可自动快速生成。
C#属性是字段的扩展
属性是类或对象中的一种智能字段形式。 从对象外部,它们看起来像对象中的字段。 但是,属性可以通过丰富的 C# 功能来实现。
访问属性时,其行为类似于字段。 但与字段不同的是,属性通过访问器实现。