C#图解教程读书笔记(第6章 类进阶)
类成员声明语句由下列部分组成:核心声明、一组可选的修饰符和一组可选的特性(attribute)。
[特性] [修饰符] 核心声明
修饰符:
如果有修饰符,必须放在核心声明之前。
如果有多个修饰符,要有序放置
特性
如果有特性,必须放在修饰符和核心声明之前
如果有多个特性,可以任何顺序
修饰符:public,private,static,const
实例类成员
public int Mem1;
静态字段
static int Mem2;被所有的实例可见,并且如果一个实例改变该值,其它实例使用的该值也会变化。
静态成员可以不用实例化,直接使用。
静态函数成员
Static public void PrintValA();
成员常量
Const int IntVal = 100;// 定义int类型常量,值为100
属性
属性是代表类的实例或类中的一个数据项的成员。
private int theRealValue;
public int TheRealValue
{
get { return theRealValue; }
set { theRealValue = value; }
}
但是使用属性的话,不能直接用get和set,而是直接使用赋值的方式。
构造函数
如果需要外部调用,需要声明为public
和类名相同,但是没有返回类型。
析构函数
每个类只能有一个析构函数
析构函数不能带参数
析构函数不能带访问修饰符
析构函数和类有相同的名称,但以一个"~"字符作前缀
析构函数只对类的实例起作用,因为没有静态析构函数。
不能在代码中显式地调用析构函数。
标准的清理模式
class FuncTest:IDisposable
{
bool disposed = false;
public void Dispose()
{
Dispose(true);
GC.SuppressFinalize(this);
}
~FuncTest()
{
Dispose(false);
}
protected virtual void Dispose(bool disposing)
{
if (disposed == false)
{
if (disposing == true)
{
// Dispose the managed resources
}
// Dispose the unmanaged resources
}
disposed = true;
}
}
readonly修饰符
和const不同,即可以直接初始化,也可以在构造函数中设置它的值。
但是,如果是static字段,初始化必需在static构造函数中完成。
this关键字
this关键字在类中使用,是对当前实例的引用。
索引
和属性一样,索引不分配内存为存储
索引和属性都主要被用来访问其它数据成员这些成员和它们关联,它们为这些成员提供设置和获取访问。
和属性一样,索引可以只有一个访问器,也可以两个都有。
索引总是实例成员,因此,索引不能声明为static。
和属性一样,实现get和set访问器的代码不必一定要关联到某个字段或属性。这段代码可以做任何事情或什么也不做,只要get访问器返回某个指定类型的值即可。
class Employee
{
public string LastName;
public string Firstname;
public string CityOfBirth;
public string this[int index]
{
set
{
switch (index)
{
case 0: LastName = value;
break;
case 1: Firstname = value;
break;
case 2: CityOfBirth = value;
break;
default:
throw new ArgumentOutOfRangeException("index");
}
}
get
{
switch (index)
{
case 0: return LastName;
case 1: return Firstname;
case 2: return CityOfBirth;
default:
throw new ArgumentOutOfRangeException("index");
}
}
}
}
当一个类中,有多个string和多个int想同时定义索引时,可以将索引定义为多个参数。
分部类和分部类型
用partial class的形式,声明分部类
partial class MyClass
{
partial void PrintSum(int x, int y);
public void Add(int x, int y)
{
PrintSum(x, y);
}
}
partial class MyClass
{
partial void PrintSum(int x, int y)
{
Console.WriteLine("Sum is {0}", x + y);
}
}
var mc = new MyClass();
mc.Add(5, 6);
C#图解教程读书笔记(第6章 类进阶)的更多相关文章
- SQL Server2012 T-SQL基础教程--读书笔记(1-4章)
SQL Server2012 T-SQL基础教程--读书笔记(1-4章) SqlServer T-SQL 示例数据库:点我 Chapter 01 T-SQL 查询和编程背景 1.3 创建表和定义数据的 ...
- SQL Server2012 T-SQL基础教程--读书笔记(5-7章)
SQL Server2012 T-SQL基础教程--读书笔记(5-7章) SqlServer T-SQL 示例数据库:点我 Chapter 05 表表达式 5.1 派生表 5.1.1 分配列别名 5. ...
- 【C#4.0图解教程】笔记(第1章~第8章)
第1章 C#和.NET框架 1..NET框架的组成 .NET框架由三部分组成(严格来说只有CLR和FCL(框架类库)两部分),如图 执行环境称为:CLR(公共语言运行库),它在运行期管理程序的执行. ...
- C++ primer plus读书笔记——第13章 类继承
第13章 类继承 1. 如果购买厂商的C库,除非厂商提供库函数的源代码,否则您将无法根据自己的需求,对函数进行扩展或修改.但如果是类库,只要其提供了类方法的头文件和编译后的代码,仍可以使用库中的类派生 ...
- C++ primer plus读书笔记——第12章 类和动态内存分配
第12章 类和动态内存分配 1. 静态数据成员在类声明中声明,在包含类方法的文件中初始化.初始化时使用作用域运算符来指出静态成员所属的类.但如果静态成员是整形或枚举型const,则可以在类声明中初始化 ...
- C#图解教程读书笔记(第2章 C#编程概述)
这章主要是一个对于C#程序的概括解释 和C/C++不同,不是用include声明引用的头文件,而是通过using的方式,声明引用的命名空间. 命名和C/C++类似,并且也是区分大小写的,这件事情在VB ...
- C#图解教程读书笔记(第1章 C#和.net框架)
C#中的主要需要记住的基础概念 CLR公共语言运行库 CIL中间语言,所有的代码都会编译成中间语言. CLI公共语言基础结构 C#的优点 C#有自动垃圾回收机制
- C#图解教程读书笔记(第15章 委托)
委托是C#的一个很重要的知识点. 1.什么是委托 委托在我认为,就是一系列格式相同的方法列表,可能就是定义的名称不一致,参数.返回值等都是一样的. 2.如何声明委托 delegate void MyF ...
- C#图解教程读书笔记(第9章 语句)
文件头的Using是Using指令,不是using语句 using (TextWriter tw = File.CreateText("xixi.txt")) { tw.Write ...
- C#图解教程读书笔记(第8章 表达式和运算符)
表达式 字面量 整数字面量 字符字面量 字符串字面量 求值顺序 优先级 结合性 与C和C++不同,在C#中的数字不具有布尔意义. 各种运算符的作用(过) 用户定义类型转换 class XiXiInt ...
随机推荐
- git忽略ssl认证
问题 在是用git克隆仓库的时候,报错如下: fatal: unable to access ‘https://github.com/........../‘: OpenSSL SSL_connect ...
- 如何优雅地使用 VSCode 来编辑 vue 文件?
最近有个项目使用了 Vue.js ,本来一直使用的是 PHPStorm 来进行开发,可是遇到了很多问题. 后来,果断放弃收费的 PHPStorm ,改用 vscode (Visual Stdio Co ...
- 网易和淘宝的rem方案剖析
以下内容到分割线前是引用前端大牛的文章,方便大家理解博主内容): 从网易与淘宝的font-size思考前端设计稿与工作流 1. 简单问题简单解决 我觉得有些web app并一定很复杂,比如拉勾网,你看 ...
- [转]OData/WebApi
本文转自:https://github.com/OData/WebApi/tree/vNext OData Web API Introduction OData Web API (i.e., ASP. ...
- svn 不能校验路径“XXX”的锁;没有匹配的可用锁令牌 故障解决方法
原文出自:https://blog.csdn.net/seesun2012 故障现象: svn Commit ,失败,提示: 不能校验路径"/SEESUN/****系统计划说明书.docx& ...
- JS实现队列
JS实现队列: 队列是一种特殊的线性表,特殊之处在于它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作,和栈一样,队列是一种操作受限制的线性表.进行插入操作的端称为队尾 ...
- java 类与对象基础整理
之前学习javaSE的时候,没有针对性地对对类与对象的一些基础进行整理,下面这些内容是笔记内容整理后的,希望以后自己可以通过这些博客时常复习! 一.类and对象的基础 类似于类的生命啊,类与对象的关系 ...
- 【原创】MapReduce程序如何在集群上执行
首先了解下资源调度管理框架Yarn. Yarn的结构(如图): Resource Manager (rm)负责调度管理整个集群上的资源,而每一个计算节点上都会有一个Node Manager(nm)来负 ...
- Spring课程 Spring入门篇 5-6 introductions应用
1 解析 1.1 aop:declare-parents 标签简介 1.2 标签使用样式 2 代码演练 2.1 introductions标签应用 1 解析 1.1 aop:declare-paren ...
- 移动端布局注意事项与less
用Koala实现less的实时编译 1.下载Koala(Koala可以实现实时编译) 2.把CSS文件夹(如index.css,index.less)拖到Koala中 3.点击到需要编译的index. ...