C#本质论笔记
第一章 C#概述
1.1 Helo,World
学习一种新语言最好的办法就是动手写程序。
C#编译器创建的.exe程序是一个程序集(Assembly),我们也可以创建能由另一个较大的程序引用的代码库。库也是一个程序集。
库(或者称为类库)使用的文件扩展名是.dll,其中的dll代表动态链接库(Dynamic Link Library,DLL)。
换言之,在一次成功的C#编译之后,生成的肯定是一个程序集,无论他是一个程序,还是一个库。
1.2 C#语法基础
1.2.1 C#关键字
Keyword(关键字,保留字)
——C#中的某些含有特殊地位和含义的单词。
——C#1.0之后没有引入任何新的关键字,但在后续的版本中,一些构造使用了上下文关键字(contextual keyword),它们除了在特殊位置之外并没有特殊含义。
——@前缀,如果关键字包含一个@前缀也可以作为标识符来使用。
标识符
——开发者提供的自己的名称。
1.2.2 类型定义
类定义(class definition)
#code
class <标识符>
{
...;
}
#endcode
*Pascal大小写(Pascal casing) 每个单词字母都大写
camel 大小写(camel casing) 除第一个单词字母开头小写外其余都大写
1.2.3 Main
方法(method)
#coed
<访问修饰符> <静态/非静态> <返回类型> 方法名 (参数列...) //方法声明
{
代码块...;
}
#endcode
Main 方法的声明
尽管声明Main方法可以没有参数和返回类型,但是C#是支持指定参数返回类型的。
#code
static int Main (string args[])
{
...;
}
#endcode
args 用以接收参数列,参数在命令行中以空格为分隔开。
*完整的命令行参数(可执行程序名称+命令行参数)可以利用System.Environment.CommandLine来接收。
具体实例请参照文章最后附录A。
int返回值,与C/C++一致,标志着程序是否成功运行,一个非零的返回值通常意味着错误。
1.2.4 语句和语句的分隔符
C#不以换行符作为语句的结束,而以分号作为一个语句的结束。
没有分号的语句
switch语句,由于大括号总是包含在switch语句中所以C#不要求在该语句后加上分号。
1.2.5 空白
除极少数情况下,C#允许开发者在代码中随意插入空白,而不会改变其语义。
利用空白来格式化代码,是代码的可读性更高。
1.3 使用变量
1.3.1 数据类型
char长度为16位,足以表示无代理项的Unicode字符。
*在某些语言文字中,需要用两个16位值来表示。第一个代码值称为“高位代理项”(high surrogate),第二个代码值称为“低位代理项”(low surrogate)。
1.3.2 变量的声明
变量名可以用任何字母或者下划线(_)来开头,后跟任意数量的字母、数字和/或者下划线。
1.3.3 变量的赋值
使用=运算符进行赋值操作。
1.3.4 变量的使用
字符串的不可变性,字符串不可改变,只能重新赋值。
1.4 控制台输入和输出
System.Console.Read()方法,读取到的单个字符以其对应的int值形式返回。如有多个字符,从头顺次读取。
*具体实例请参照文章最后的附录B。
附录A:
附录B:
C#本质论笔记的更多相关文章
- 《C#本质论》读书笔记(18)多线程处理
.NET Framework 4.0 看(本质论第3版) .NET Framework 4.5 看(本质论第4版) .NET 4.0为多线程引入了两组新API:TPL(Task Parallel Li ...
- 《C# 6.0 本质论》 阅读笔记
<C# 6.0 本质论> 阅读笔记 阅读笔记不是讲述这本书的内容,只是提取了其中一部分我认为比较重要或者还没有掌握的知识,所以如果有错误或者模糊之处,请指正,谢谢! 对于C# 6.0才 ...
- 《C#本质论》读书笔记(16)构建自定义集合
16.1 更多集合接口 集合类(这里指IEnumerable层次结构)实现的接口层次结构 16.1.1 IList<T>与IDictionary<TKey,TValue> 字典 ...
- 《C#本质论》读书笔记(15)使用查询表达式的LINQ
15.1 查询表达式的概念 简单的查询表达式 private static void ShowContextualKeywords1() { IEnumerable<string> sel ...
- 《C#本质论》读书笔记(14)支持标准查询操作符的集合接口
14.2.集合初始化器 使用集合初始化器,程序员可以采用和数组相似的方式,在集合的实例化期间用一套初始的成员来构造这个集合. 如果没有集合初始化器,就只有在集合实例化后才能显示添加到集合中--例如 ...
- 《C#本质论》读书笔记(12)委托和Lambda表达式
12.1.委托概述 12.1.2 委托的数据类型 为了减少重复代码数量,可以将比较方法作为参数传递给 BubbleSort()方法.此外,为了将方法作为参数传递,必须有一个能够标识方法的数据类型--也 ...
- ASP.NET本质论第一章网站应用程序学习笔记2
1.初步走进ASP.NET 上篇笔记我们讲述了服务器监听问题,这篇我们就要讲述具体的请求处理了,ASP.NET所涉及的类大多数定义在System.Web程序集中. 在.NET中,程序集管理的最小逻辑单 ...
- C#本质论读书笔记:第一章 C#概述|第二章 数据类型
第一章 1.字符串是不可变的:所有string类型的数据,都不可变,也可以说是不可修改的,不能修改变量最初引用的数据,只能对其重新赋值,让其指向内存中的一个新位置. 第二章 2.1 预定义类型或基本类 ...
- 《C# 6.0 本质论》 - 学习笔记
<C# 6.0 本质论> ========== ========== ==========[作者] (美) Mark Michaelis (美) Eric Lippert[译者] (中) ...
随机推荐
- Linux0.11中对文本文件进行修改的策略
现在,假设 hello.txt 是硬盘上已有的一个文件,而且内容为 "hello, world" ,在文件的当前指针设置完毕后,我们来介绍 sys_read , sys_write ...
- 02_Android写xml文件和读xml文件
新建Android项目 编写AndroidManifest.xml,使本Android项目具有单元测试功能和写外设的权限. <?xml .控制台输出结果
- 十大常见Java String问题
翻译人员: 铁锚 翻译时间: 2013年11月7日 原文链接: Top 10 questions of Java Strings 本文介绍Java中关于String最常见的10个问题: 1. 字符串比 ...
- 《java入门第一季》之面向对象面试题(成员变量与局部变量的区别)
/* 成员变量和局部变量的区别? A:在类中的位置不同 成员变量:在类中方法外 局部变量:在方法定义中或者方法声明上 B:在内存中的位置不同 成员变量:在堆内存 局部变量:在栈内存 C:生命周期不同 ...
- 集群通信组件tribes之应用程序处理入口
Tribes为了更清晰更好地划分职责,它被设计成用IO层和应用层,IO层专心负责网络传输方面的逻辑处理,把接收到的数据往应用层传送,当然应用层发送的数据也是通过此IO层发送,数据传往应用层后必须要留一 ...
- 使用JCrop进行图片裁剪,裁剪js说明,裁剪预览,裁剪上传,裁剪设计的图片处理的工具类和代码
1.要想制作图片裁剪功能,可以使用网上的裁剪工具JCrop,网址是:https://github.com/tapmodo/Jcrop/ 案例效果如下: 2.引入JCrop的js代码,具体要引入那 ...
- 菜鸟玩云计算之十五:在Ubuntu上创建和管理Redhat虚拟机
菜鸟玩云计算之十五:在Ubuntu上创建和管理Redhat虚拟机 chedou@hgdb.net 虚拟机给工作带来巨大的便利,不仅仅体现在资源的按需使用,而且配置的迁移特别方便.本文将使用Ubuntu ...
- ActiveMQ系列之四:用ActiveMQ构建应用
Broker:相当于一个ActiveMQ服务器实例 命令行启动参数示例如下: 1:activemq start :使用默认的activemq.xml来启动 2:activemq start xbean ...
- Java学习网站大全
Java学习网站 http://www-900.ibm.com/developerWorks/cn/java/index.shtml IBM的JAVA专题--永远的蓝色巨人 http://www.hu ...
- Zookeeper管理多个HBase集群
zookeeper是hbase集群的"协调器".由于zookeeper的轻量级特性,因此我们可以将多个hbase集群共用一个zookeeper集群,以节约大量的服务器.多个hbas ...