《C#高级编程》第三章学习笔记

对象和类型

对象(Object)是问题域或实现域中某些事物的一个抽象,它反映此事物在系统中需要保存的信息和发挥的作用;它是一组属性和有权对这些属性进行操作的一组服务的封装体。
面向对象编程将数据和方法封装在一个整体(类)里面,通过定义一个类,将一系列具有相同抽象概念的事物的共同特性概括起来,并在类中定义对数据的处理和访问方法。
类型包含引用类型和值类型,结构是指类型,类是引用类型,结构和类实际都是创建对象的模板。

在面向对象编程中,类是最基本的单位,包含静态成员和实例成员。静态成员用static修饰。成员列表如图:
在这里插入图片描述

字段

与类相关的变量,一般用private修饰,最好不要直接访问字段,而是通过属性访问,因为一旦修改字段,必须要经过重新编译。

class customer()
{
private string name;
private int age;
}

属性

可以通过客户端访问的一对方法,包含get和set访问器,来检索和设置支持字段的值。

class customer()
{
	private string name;
	public string Name
	{
	get{return name;}
	set{name=value;}
	}
}
  • 可以不写逻辑,直接用属性初始化器实现自动属性
  • 可以给set添加访问修饰符,来限制访问
  • 可以只写其中一个属性,只读或只写

方法

和类相关的访问数据和处理数据的函数。
访问修饰符 返回值 方法名 (参数类型 参数名称)
{ 函数体}

public bool IsSquare(Rectangle rect)
{
return rect.width==rect.height;
}

  • 若函数体只有一条语句,可以使用表达式体:lambda表达式
  • 方法的重载,方法名称相同,参数个数或者参数类型不同
  • 参数的命名,若参数通过名称很难区分,可以添加命名
r.move(10,20,30);
r.move(X:10,Y:20,Z:30);
  • 可选参数,放在最后一个,给定默认值
public void Test(int x,int y=10)
{
	Console.WriteLine(x+y);
}

可以传递一个参数x=10——>Test(20)
也可以传递两个参数x=10,y=20——>Test(30)

  • 个数可变的参数,通过声明数组(eg :int)类型的参数,添加params关键字,则可以使用任意个int类型参数调用该方法。
public void AnyNumeber(params int[]data)
{
	foreach(int a in data)
	{ 
		Console.WriteLine(a);
    }
}

构造函数

与类同名,但是没有返回类型的方法,若不带参数,可以不声明,编译器自动生成。

  • 从构造函数内调用其他构造函数,包含几个构造函数,将同样的字段放在一起,通过构造函数初始化器,利用this关键字来选择最合适的那个构造函数。
  • 静态构造函数,只能有一个,用static修饰,只执行一次,不能带参数,只能访问静态的成员

结构

用关键字struck修饰,值类型,存储在堆栈上stack,不支持继承。当需要小的数据结构,而不需要复杂的实现时用结构,性能损失小。

  • ref 参数,按引用传递,无论定义还是调用都需要加上这个关键字
  • out参数,若返回多个值,并且类型不同,利用out输出不同类型的参数
// 解析是否类型转换成功
string input=Console.ReadLine();
int result;
if (int.TryParse(input,out result))
{
	Console.WriteLine(result);
}

部分类

partial关键字,一般在winform窗体生成时,默认的很多属性通过代码生成器放在一起,自定义用代码实现的部分放在一起,代码放的位置不同,编译时会合成一个类

Object类

所有类的基类,包含很多公共的方法:

  • ToString(),获取对象的字符串
  • GetHashCode(),若对象放在字典数据结构中,通过此方法来确定把对象放在结构的什么地方
  • Equals(),比较对象相等性
  • Finalize(),引用对象作为垃圾被回收清理资源时调用
  • GetType(),返回从Syste.Type中派生的类的一个实例
  • Clone(),浅层复制对象
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值