C#第三章 对象和类型
来源:互联网 发布:淘宝外套女装新款 编辑:程序博客网 时间:2024/05/17 22:26
第三章 对象和类型
1. 类和结构的区别:
a. 最大的区别是存储位置不一样:类是引用类型,存放在堆上,结构式值类型,存放在堆栈上。所以new运算符与类的工作方式不同,不分配内存,只是调用构造函数,初始化字段
b. 结构不支持继承
c. 结构不允许定义无参数构造函数,不能给字段提供初始值
2. 类成员
类中的数据(字段、常量、事件)和函数(方法、属性、构造函数和终结器、运算符以及索引器)称为类的成员
(1) ref参数 迫使参数通过引用传送给方法 带入前初始化
(2) out输出参数 参数前加out关键字时,传递给该方法的变量可以不初始化
static void Main(string[] args)
{
//ref关键字
//int[] ints = {10};
//int i = 10;
//SomeFunction(ints,ref i);
//Console.WriteLine(ints[0].ToString()+i.ToString());
//out关键字
int i;
SomeFunction2(out i);
Console.WriteLine(i);
}
/// <summary>
/// ref
/// </summary>
/// <param name="ints"></param>
/// <param name="i"></param>
static void SomeFunction(int[] ints, ref int i)
{
ints[0] = 100;
i = 100;
}
/// <summary>
/// out
/// </summary>
/// <param name="i"></param>
static void SomeFunction2(out int i)
{
i = 100;
}
(3) 方法重载 方法中的参数名称、参数类型或参数个数不同
a. 两个方法不能仅在返回类型上有区别
b. 两个方法不能仅根据参数是声明为ref还是out来区分
(4) 构造函数
C#中默认有一个没有参数没有返回值的构造函数
把构造函数定义为private或protected,不相关的类就不能访问
public class MyNumber
{
private int number;
private MyNumber(int number)
{
this.number = number;
}
}
在这个例子中,我们没有为MyNumber定义任何公共或受保护的构造函数。所以MyNumber类不能使用new运算符在外部代码中实例化(但可以在MyNumber上编写一个公共静态属性或方法,已进行实例化),适用于以下两种情况:
类仅用作某些静态成员或属性的容器,因此永远不会实例化
希望类仅通过调用某个静态成员函数来实例化
a.静态构造函数 没有访问修饰符,不能带任何参数,一个类只能有一个静态构造函数,显然,静态构造函数只能访问静态成员
(5) 只读字段
public class DocumentEditor
{
public readonly DateTime CreationDate;
public DocumentEditor()
{
CreationDate = new DateTime(2002,1,1);
}
}
把字段声明为只读类型,表示其值只能在构造函数中设置
3. 结构与类的区别
结构是值类型,不是引用类型。他们存储在堆栈中火存储为内联(如果他们是对象的一部分,就会保存在堆中),其生存期的限制与简单的数据类型一致
结构不支持继承
结构的构造函数的工作方式有一些区别。尤其是编译器总提供一个无参数的构造函数,这是不允许替换的
使用结构,可以指定字段如何在内存中布局
4. 部门类(partial)
Partial关键字允许把类、结构或接口放在多个文件中。如果没有类的源代码时,可以使用部分类给其添加内容
//BigClassPart1.cs
partial class TheBigClass
{
public void MethodOne()
{
Console.WriteLine("one");
}
}
//BigClassPart2.cs
partial class TheBigClass
{
public void MethodTwo()
{
Console.WriteLine("two");
}
}
5. 静态类(static)
如果一个类只包含静态的方法和属性,该类就可以是静态的。静态类不能创建实例。条用静态类中的方法:类名.方法名
- C#第三章 对象和类型
- C#高级编程读书笔记 - 第三章对象和类型
- C#个人总结,第三章:对象和类型
- 《C#高级编程》【第三章】对象和类型 -- 学习笔记
- 第三章 用对象思考:值类型和引用类型
- C# 对象和类型
- C# 对象和类型
- 《csharp高级编程》 学习笔记 第三章 对象和类型
- 2.C#对象和类型
- C#基础(二)对象和类型
- c#基础 之对象和类型
- C#高级编程:对象和类型
- C# 高级编程 对象和类型
- 第三章 类和对象
- C# 引用类型-对象类型
- 第三章:Javascript类型、值和变量。
- c# 对象类型
- C# 对象类型转换
- 模拟"(Simulation)与"仿真"(Emulation)的区别
- C#图片处理基本应用(裁剪,缩放,清晰度,水印)
- 详解C#委托,事件与回调函数
- 怎样成为优秀软件模型设计者
- 网络协议编写的三层境界
- C#第三章 对象和类型
- pthread_cond_timedwait及Linux下与时间有关的结构体
- 使用存储过程进行基本的增删改查
- Excel导出数据
- 批处理for命令详解
- Little endian和Big endian的区别
- 如何将V4L2映射的内存地址转换成物理地址?
- 搭建WEB服务器集群(apache+tk+tomcat)
- 常用数据库(MsSql,Oralce,MySql)用SQL实现分页查询