《C#入门经典》再次阅读时的读书笔记(一)

原创 2008年10月01日 23:26:00

第1章 C#简介

1.Net Framework是Microsoft为开发应用程序而创建的一个富有革命性的新平台,它可以创建Windows应用程序,Web应用程序,Web服务和其他各种类型的应用程序.

2.编译.Net Framework库的代码时,先将其编译为MSIL(Microsoft Intermediate Language),再由Just-In-Time(JIT)编译器编译为本地机器代码.MSIL中间语言代码仅在需要时才编译.

3.程序集包括可执行应用程序文件(.exe)和其他应用程序使用的库(.dll).
  程序集还包含元信息(即程序集中包含的数据的信息,也称元数据)和可选的资源(MSIL 使用的其他数据,如声音文件和图片).元信息允许程序集是自描述的,因此不需要其他信息就可以使用程序集.

4.在CLR控制之下运行的应用程序是托管的,CLR(Common Language Runtime)管理着应用程序,其方式是管理内存,处理安全性,以及允许进行跨语言调试.

5..Net的垃圾自动回收机制会频繁检查计算机内存,从中删除不再需要的内容.

第三章 变量和表达式

1.使用#region和#endregion定义可以扩展和收缩的代码区域的开头和结尾.

2..Net Framework命名空间的两种命名规定:PascalCase约定每个单词的第一个字母大写,其他的小写,camelCase约定第一个单词以小写字母开头.Microsoft建议对于简单变量使用camelCase规则,而比较高级的命名则使用PacalCase.

3.逐字地指定字符串即在该字符串前面加一个@字符.
  字符串是引用类型,所以字符串可以赋null值,表明字符串变量不引用字符串.

4.命名空间是.Net中提供应用程序代码容器的方式,这样就可以惟一地标识代码及其内容.

第4章 流程控制

1.使用&&和||运算符来代替&和|,性能会有一定的提高,因为&&运算符只要第一个操作数为False就不考虑第二个操作数的取值了,同样如果第一个操作数为True,||运算符无需考虑第二个操作数的取值.

第5章 变量的更多内容

1.类型转换
  隐式转换:从类型A到类型B的转换可以在所有的情况下进行,执行转换的规则非常简单,可以让编译器进行.任得类型A,只要其取值范围包含在类型B的取值范围内,就可以隐式转换为类型B.
  显式转换:从类型A到类型B转换只能在某些情况下进行,转换的规则比较复杂,应进行某种类型的处理.

2.枚举定义
  enum typename
  {
     value1,
     value2,
     value3
     ...
     valuen
  }

3.结构体定义
  struct <typename>
  {
    <memberDeclaration>
  }

4.一维数组: <basetype>[] <name>;
  int[] myIntArray = {1, 2, 3, 4, 5};
  int[] myIntArray = new int[5]={1, 2, 3, 4, 5};
  二维数组: <basetype>[,] <name>;
  double[,] hillHeight = {{1, 2, 3, 4}, {2, 3, 4, 5}, {3, 4, 5, 5}};
  double[,] hillHeight = new double[3,4];

5.数组的数组:数组的元素是数组
 jaggedIntArray = new int [2][];
 jaggedIntArray[0] = new int[3];
 jaggedIntArray[1] = new int[4];
 或 jaggedIntArray = new int[3][]{new int[] {1, 2 ,3}, new int[] {1}, new int[] {1,2}};
 或 int[][] jaggedIntArray = {new int[] {1, 2, 3}, new int[] {1}, new int[] {1, 2}};

6.<string>.ToCharArray(): string类型转换为char[]数组
  <string>.ToLower(), <string>.ToUpper(): 转换为小写或大写字母
  <string>.TrimStart, <string>.TrimEnd(): 删除字符串前面或后面的空格
  <string>.PadLeft(), <string>.PadRight(): 在字符串前面或后面加指定个数的空格或字符(char)
  <string>.Split(): string类型转换为string[]数组,以char[]数组为分隔符

第6章 函数
1.函数定义
  参数数组:放在函数的最后一个参数定义,它可以使用个数不定的参数来调用函数,使用params关键字定义.   
  static <reutrntype> <functionname>(<paramType> <paramName>, ... ,
                                     params <type>[] <name>)
  {
    ...
    return <returnvalue>;
  }

2.ref与out关键字
  两者都可以按引用传递返回变量的值.把未赋值的变量用作ref参数是非法的,但可以把未赋值的变量用作out参数.此外,函数在使用out参数时,该参数必须看作是还未赋值,即调用代码可以把已赋值的变量用作out参数,存储在该变量中值会在函数执行时会丢失.在函数调用时必须使用ref或out关键字.

3.在控制台应用程序中,定义全局变量必须使用static或const关键字,static允许修改变量的值,const不允许修改变量的值.如果局部变量与全局变量同名,全局变量就会被屏蔽.

4.声明一个变量并不会分配内存,只有给变量赋值后才会分配内存,如果变量定义后未赋初值而在循环内部赋值
,则该变量的作用域只在循环内部使用.一般情况最好在声明和初始代所有变量后,再在代码块中使用它们.

5.Main()函数的四种形式
  static void Main()
  static void Main(string[] args)
  static int Main()
  static int Main(string[] args)
  args用于从命令行接受参数

6.在结构体中定义的函数称为结构函数,结构函数可以访问结构体中所有的变量,结构函数不需要static关键字修饰.

7.函数重载:允许创建同名的多个函数,但这些函数使用不同的参数类型.

8.委托:委托的声明指定了一个函数签名,其中包含一个返回类型和参数列表.可以使用委托类型的变量来调用函数.此外还可以把委托变量作为参数传递给函数,这样就可以使用委托调用它引用的任何函数,而且在运行之前无需知道调用的是哪个函数.
  delegate double ProcessDelegate(double param1, double param2);
  static void executeFunction(ProcessDelegate process);
  {
    process(2.2, 3.3);
  }

第7章 调试和错误处理

1.Debug目录下的.pdb文件为编译后的机器码程序.

2.输出调试信息
  Debug模式下输出:
  Debug.WriteLine();  Debug.Write(); Debug.WriteLineIf(): 条件为True时才输出.
  Release模式下输出:
  Trace.WriteLine(); Trace.Write(); Trace.WriteLineIf(): 条件为True时才输出.
  要使用以上函数,必须声明命名空间:using System.Diagnostics;
  输出调试信息的两种方法: 
  诊断输出:总是要从应用程序中输出调试结果时使用这种方法,尤其是要输出的字符串比较复杂,涉及几个变量或许多信息的情况下,使用该方法比较好.另外,要在发布模式下获得执行应用程序的调试结果,Trace命令是惟一的选择.
  跟踪点(断点):希望快速输出重要信息,以便解决语义错误,应使用跟踪点.

3.断点是源代码中自动进入中断模式的一个标记,它可以配置为:
  1)遇到断点时立即进入
  2)遇到断点时,如果布尔表达式的值为True,则进入中断模式
  3)遇到某断点一定的次数后进入中断模式
  4)遇到断点时,如果自从上次遇到断点以来变量的值发生了变化,就进入中断模式.
  5)把文本输出到调试窗口中,或者执行一个宏.

4.进入中断模式的另外两种方式:一是在产生一个未处理的异常时选择进入该模式;二是生成一个判定语句时中断.判定函数有两个版本:Debug.Assert()和Trace.Assert().遇到判定语句时选择Abort中断应用程序的执行,选择Retry进入中断模式.
  Assert()函数带三个参数,第一个参数为false时触发判定语句,第二,三个参数分别把信息写到弹出的对话框和输出窗口中.

5.try
  {
     ...
  }
  catch (<exception e>)
  {
     ...
  }
  finally
  {
    ...
  }
  可以只有try块和finally块,而没有catch块,或者有一个try块和好几个catch块.如果有一个或多个catch块,则finally块是必须的.异常发生时,选择一个匹配的异常(catch块)执行,如果没有找到匹配的异常则选择默认的catch块执行,finally块是总是要执行的.在catch块中再次抛出异常使用throw,此时先执行当前异常块中finally块再返回上级代码处理.

APUE读书笔记-第三章 文件I/O

今天看得挺快的,一下子就把第二章看完了,不过第二章也确实看得不仔细,这一章其实在程序设计中还是非常重要的,因为这一章的内容决定了程序的可移植性。 好了,回到这一章的主题文件I/O。  3.2节主要对文...
  • u012927281
  • u012927281
  • 2016年06月15日 15:25
  • 2218

【java】《java编程思想》 读书笔记

之前主要用的C++的比较多,之前花了快2个月的实际认真系统全面的学习了以下java的基础语法,《java编程思想》这本书翻译水平确实不是很好,很多话读着会比较拗口。推荐读之前,先去网上搜索 “java...
  • a2888409
  • a2888409
  • 2015年10月15日 10:07
  • 1930

深度学习文献阅读笔记(1)

转眼间已经研二了,突然想把以前看过的文献总结总结与大家分享,留作纪念,方便以后参考。   1、深度追踪:通过卷积网络进行差异特征学习的视觉追踪(DeepTrack:Learning Discri...
  • u013088062
  • u013088062
  • 2015年08月14日 09:38
  • 4476

《C#入门经典v6》读书笔记4 数据访问

第21章 文件系统数据stream 流 serial device 序列化设备 compression 压缩 truncate 截断 CSV(Comma-Separated Values,逗号...
  • wkw1125
  • wkw1125
  • 2016年04月18日 17:57
  • 2470

C#入门经典-前6章读书笔记

Console.ReadLine() Console.WriteLine() foreach显式转换与隐式转换checked/uncheckedConvert.ToDouble(val)枚举enum ...
  • JustTao_
  • JustTao_
  • 2015年07月23日 17:18
  • 221

读书笔记之《C#入门经典》基础篇

总结一些在学习《C#入门经典》一书中的技巧细节以及基础知识点,由于本人是一个objective-c程序员,所以会偶尔碰到C#与objectiv-c比较类似的概念会提醒一下,下面是基础篇:1.主动进行垃...
  • eric_XJJ
  • eric_XJJ
  • 2013年03月02日 17:11
  • 778

《C#入门经典v6》读书笔记2 Windows编程

第15章 基本桌面编程GUI(Graphical User Interface,图形用户界面) 第16章 高级桌面编程 第17章 Windows Store应用程序 第18章 部署桌面应用程序...
  • wkw1125
  • wkw1125
  • 2016年04月09日 20:04
  • 451

《C#入门经典v6》读书笔记5 WCF&WWF

WCF结合了Web服务+远程技术,是应用程序之间进行通信的通用基础结构,比Web服务强大,比远程技术更易于掌握。由于暂时没有用到WWF的地方,暂不做深入研究,主要了解下WWF是什么,有什么用。...
  • wkw1125
  • wkw1125
  • 2016年04月21日 20:11
  • 538

《C#入门经典v6》读书笔记1 C#语言

买了《C#入门经典》(v6)和《C#高级编程》(v9),决定系统地学一遍。这是我的读书笔记而已,不是什么教程,如果有错误,还请各路大神指正。 希望自己坚持看完这两本书,做好笔记,补缺补漏。...
  • wkw1125
  • wkw1125
  • 2016年03月30日 16:46
  • 845

《C# 并发编程 · 经典实例》读书笔记

前言 最近在看《C# 并发编程 · 经典实例》这本书,这不是一本理论书,反而这是一本主要讲述怎么样更好的使用好目前 C#.NET 为我们提供的这些 API 的一本书,书中绝大部分是一些实例,在日...
  • zhanfu2905
  • zhanfu2905
  • 2017年04月01日 21:27
  • 91
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:《C#入门经典》再次阅读时的读书笔记(一)
举报原因:
原因补充:

(最多只允许输入30个字)