`

C#学习笔记一 对象和类型

    博客分类:
  • c#
阅读更多
最近在学习c#,做一些笔记。
1、对象和类型
类和结构
区别:类是存储在堆上的引用类型,结构是存储在堆栈上的值类型。访问方式、结构不支持继承。较小的结构可提高性能。
都可以用new来声明实例。
1.1类成员
类中的数据和函数称为类的成员。
数据成员:字段、常量(const)、事件
函数成员:方法、属性、构造函数、终结器(析构函数)、运算符、索引器。
方法:
1、给方法传递参数
参数可以通过引用或值传递给方法,在变量通过引用转递给方法时,被调用的方法得到的就是这个变量,所以在方法内部对变量进行的任何改变在方法退出后仍旧发挥作用。而如果变量是通过值传递的,被调用的方法得到的是变量的一个副本,也就是说,在方法退出后,对变量的改变会丢掉。对复杂的数据类型,按引用传递的效率更高,因为按值传递时要复制大量的数据。

要使按值传递的参数按引用方式传递可以使用ref out关键字
他们的区别是:
1、使用ref型参数时,传入的参数必须先被初始化。对out而言,必须在方法中对其完成初始化。
他们的适合场合:
out适合用在需要retrun多个返回值的地方,而ref则用在需要被调用的方法修改调用者的引用的时候。

参考:http://www.cnblogs.com/hubj/archive/2008/12/24/1361811.html

2、方法的重载
声明同名但参数个数或类型不同的方法即可。
注意:
两个方法不能仅在返回类型上有区别。
两个方法不能仅根据参数是声明为ref还是out来区分。

构造函数
如果提供了带参数的构造函数,编译器就不会自动提供默认的构造函数。
如果将构造函数定义为private或protected.则外部代码就无法通过new实例化该类,
这在下面两种情况下是有用的:
1)类仅用作某些静态成员或属性的容器,因此永远不会实例化
2)希望类仅通过某个静态成员函数来实例化(所谓对类实例化的类代理方法)
静态构造函数
通常在第一次调用类的成员之前执行

构造函数初始化器

3、只读字段
readonly比const关键字灵活的多。只读字段可以在构造函数中赋值,但不能在其他地方赋值。可以结合静态构造函数初始化一些变量。如有一个编辑文档的程序,因为要注册,需要限制可以同时打开的文档数,可以定义一个字段表示这个最大的文档数,这个字段必须是只读的。每次安装程序时,从注册表或其他文件读入
public class DocumentEditor
{
public static readonly uint MaxDocuments;
static DocumentEditor()
{
MaxDocuments = 读数据();
}
}


4、结构
结构是值类型,不是引用类型,他们存储在堆栈中火存储为内联。
结构的构造函数。编译器总是提供一个无参数的构造函数,这是不允许替换的。
不允许定义无参数的构造函数。
5、部分类
partial关键字允许把类、结构、接口放到多个文件中。
6、静态类
不能创建静态类的实例
7、Object类
所有类的基类
ToString()
GetHashTable()
Equals()
Finalize()
GetType()


分享到:
评论

相关推荐

    c#学习笔记.txt

    c#学习笔记(1) 51099在线学习网发布 文章来源:网络收集 发布时间:2006-05-25 字体: [大 中 小] 51099在线学习网 http://www.51099.com 1, 结构(struct) 与 类(class) [attributes] [modifiers] struct ...

    C#6.0学习笔记——从第一行C#代码到第一个项目设计(第一个包)

    在本书最后一章,专门设计了综合实例——“综合实例1: 照片面积计算机器”和“综合实例2: 文件加密与解密工具”,通过这两个综合实例,既可以将前20章的知识融会贯通,又可以抛砖引玉,真正教会读者开发C#应用...

    C#6.0学习笔记——从第一行C#代码到第一个项目设计(第二个包)

    在本书最后一章,专门设计了综合实例——“综合实例1: 照片面积计算机器”和“综合实例2: 文件加密与解密工具”,通过这两个综合实例,既可以将前20章的知识融会贯通,又可以抛砖引玉,真正教会读者开发C#应用...

    c#学习笔记——学习心得

    域:一个代表和某对象或类相关的变量的成员 字段:和属性相同,是用来存储对象的值,可以直接访问数据且不能对数据添加任何限制,但是属性不能且可以对数据添加访问限制。一个在类或结构的定义中声明的变量。可以被...

    c#手写笔记文档 适用于c#实战开发

    C# 是一个现代的、通用的、面向对象的编程语言,它是由微软(Microsoft)开发的,由 Ecma 和 ISO 核准认可的。C# 是由 Anders Hejlsberg 和他的团队在 .Net 框架开发期间开发的。C# 是专为公共语言基础结构(CLI)...

    C#技术内幕 学习笔记

    对象生存周期管理十分关键,因为.NET GC把对象到处移动,并且当对象不再使用时,自动处理这些对象。RCW服务告诉 .NET,应用程序正与托管.NET组件交互,同时又使非托管COM组件“觉得”COM对象是被传统的COM客户端调用...

    C#学习笔记——基本语法

    C#是一种面向对象的编程语言。在面向对象的程序设计方法中,程序有各种相互交互的对象组成。相同种类的对象通常具有相同的类型,或者说,是在先沟通那个的class中。 例如,以Rectangle(矩形)对象为例,它具有length和...

    net学习笔记及其他代码应用

    1. 简述 private、 protected、 public、 internal 修饰符的访问权限。 答 . private : 私有成员, 在类的内部才可以访问。...47.当一个线程进入一个对象的一个synchronized方法后,其它线程是否可...

    c#中的扩展方法学习笔记

    开头的一句话是:扩展方法是让我们在不改变类原有代码的情况下动态地添加方法的方式,这给面向对象设计 模块设计带来了质的提升 很明显,扩展方法在框架设计或者平时码代码中,是能够提升我们整个架构的灵活性的 简介 ...

    C#学习笔记整理_深入剖析构造函数、析构函数

    1.若没提供任何构造函数,则系统会自动提供一个默认的构造函数,初始化所有成员为默认值(引用类型为空引用null,值类型为0,bool类型为false); 2.若提供了带参数的构造函数,则系统不提供默认的构造函数; 3.构造...

    ASP升级.net资料大全(c#入门 语言规范 源码教程 学习笔记 技术资料 面试题 asp与.net代码生成器)

    C#学习 01_类.htm.txt 02_构造函数的执行序列.htm.txt 03_抽象类和接口.htm.txt 04_结构类型.htm.txt 05_类成员的定义.htm.txt 06_类成员的其他议题.htm.txt 07_接口的执行.htm.txt 08_集合.htm.txt 09_...

    Spring.NET学习笔记

    Spring.NET学习笔记:资源有源代码程序及文档说明,基础篇、应用篇、扩展集成、企业架构体系实战等;基础篇包括:控制反转,环境搭建,实现简易IOC框架,对象的创建,容器中对象作用域,依赖注入,依赖对象的注入,...

    .net技术资料大全(语言规范 源码教程 学习笔记 技术资料 .net代码生成器)

    C#学习 01_类.htm.txt 02_构造函数的执行序列.htm.txt 03_抽象类和接口.htm.txt 04_结构类型.htm.txt 05_类成员的定义.htm.txt 06_类成员的其他议题.htm.txt 07_接口的执行.htm.txt 08_集合.htm.txt 09_...

    .NET性能优化方法 学习笔记 (详细整理版)

    1. C#语言方面 1.1 垃圾回收 1.1.1 避免不必要的对象创建 1.1.2 不要使用空析构函数 ★ 1.1.3 实现 IDisposable 接口 1.2 String 操作 1.2.1 使用 StringBuilder 做字符串连接 1.2.2 避免不必要的调用 ...

    C-sharp-Study:学习笔记,在一定时间段内会在Blog更新相关笔记,无需研究本项目代码(也没啥好研究的对吧)

    C#学习记录 从Console到面向对象,摸鱼学习状态,预计完成学习时间为2022/03/26,主要学习内容为面向对象、WPF等 本项目是Visual studio 2019解决方案一整套文件,并非只有代码 现已知问题:项目被重命名,但是源...

    值类型与引用类型理论内容.part01.rar

    ASP.NET培训资料(笔记版)(AJAX,C#,JavaScript,SQL) 详细的资料 三个月的课程录像+资料笔记(花了一万六千块的培训资料超值【19G的经典内容】 认真学习后包你能成为优秀的.net程序员 <br>(注明:不是...

    值类型与引用类型理论内容.part05.rar

    <br>第一阶段教学内容安排(200课时) 课程名称 课程内容 培训目的 C# 基本语法、面向对象的思想、数据结构和算法以及设计模式(120课时) 详细介绍.Net Framework、C# 基本语法、编程规范和编程技巧、...

    ruby 学习笔记(2) 类的基本使用

    ruby语言跟c#的一些重要差别在于: 1.ruby是动态语言,c#是静态语言–即对象在new出来以后,ruby还可以动态给对象实例添加一些属性或方法(javascript也是如此) 2.ruby中刻意弱化了变量类型这个概念,默认情况下变量/...

    asp.net知识库

    VS2005 ASP.NET本地化学习笔记&感受 在自定义Server Control中捆绑JS文件 Step by Step 深度解析Asp.Net2.0中的Callback机制 使用 Web 标准生成 ASP.NET 2.0 Web 站点 ASP.NET 2.0基于SQLSERVER 2005的aspnetdb.mdf...

    云计算操作系统Windows Azure学习笔记

     1.2 存储服务:存储二进制和结构化数据  1.2.1 支持:  · Blob类型  · Table类型  · Queue类型  · File类型  1.2.2 全局命名空间:账户名+分区名+对象名http(s)://AccountName.<service>.core....

Global site tag (gtag.js) - Google Analytics