第一章 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#本质论笔记的更多相关文章

  1. 《C#本质论》读书笔记(18)多线程处理

    .NET Framework 4.0 看(本质论第3版) .NET Framework 4.5 看(本质论第4版) .NET 4.0为多线程引入了两组新API:TPL(Task Parallel Li ...

  2. 《C# 6.0 本质论》 阅读笔记

    <C# 6.0 本质论> 阅读笔记   阅读笔记不是讲述这本书的内容,只是提取了其中一部分我认为比较重要或者还没有掌握的知识,所以如果有错误或者模糊之处,请指正,谢谢! 对于C# 6.0才 ...

  3. 《C#本质论》读书笔记(16)构建自定义集合

    16.1 更多集合接口 集合类(这里指IEnumerable层次结构)实现的接口层次结构 16.1.1 IList<T>与IDictionary<TKey,TValue> 字典 ...

  4. 《C#本质论》读书笔记(15)使用查询表达式的LINQ

    15.1 查询表达式的概念 简单的查询表达式 private static void ShowContextualKeywords1() { IEnumerable<string> sel ...

  5. 《C#本质论》读书笔记(14)支持标准查询操作符的集合接口

      14.2.集合初始化器 使用集合初始化器,程序员可以采用和数组相似的方式,在集合的实例化期间用一套初始的成员来构造这个集合. 如果没有集合初始化器,就只有在集合实例化后才能显示添加到集合中--例如 ...

  6. 《C#本质论》读书笔记(12)委托和Lambda表达式

    12.1.委托概述 12.1.2 委托的数据类型 为了减少重复代码数量,可以将比较方法作为参数传递给 BubbleSort()方法.此外,为了将方法作为参数传递,必须有一个能够标识方法的数据类型--也 ...

  7. ASP.NET本质论第一章网站应用程序学习笔记2

    1.初步走进ASP.NET 上篇笔记我们讲述了服务器监听问题,这篇我们就要讲述具体的请求处理了,ASP.NET所涉及的类大多数定义在System.Web程序集中. 在.NET中,程序集管理的最小逻辑单 ...

  8. C#本质论读书笔记:第一章 C#概述|第二章 数据类型

    第一章 1.字符串是不可变的:所有string类型的数据,都不可变,也可以说是不可修改的,不能修改变量最初引用的数据,只能对其重新赋值,让其指向内存中的一个新位置. 第二章 2.1 预定义类型或基本类 ...

  9. 《C# 6.0 本质论》 - 学习笔记

    <C# 6.0 本质论> ========== ========== ==========[作者] (美) Mark Michaelis (美) Eric Lippert[译者] (中) ...

随机推荐

  1. 【一天一道LeetCode】#64. Minimum Path Sum.md

    一天一道LeetCode 本系列文章已全部上传至我的github,地址:ZeeCoder's Github 欢迎大家关注我的新浪微博,我的新浪微博 欢迎转载,转载请注明出处 (一)题目 Given a ...

  2. equals()与hashCode()方法协作约定

    翻译人员: 铁锚 翻译时间: 2013年11月15日 原文链接: Java equals() and hashCode() Contract 图1 Java所有对象的超类 java.lang.Obje ...

  3. 介绍几个好用的android自定义控件

    首先看效果图, 看下这两个界面,第一个中用到了一个自定义的FlowRadioGroup,支持复合子控件,自定义布局: 第二个界面中看到了输入的数字 自动4位分割了吧:也用到了自定义的DivisionE ...

  4. Android万能的指示器

    说到 ViewPager 指示器,想必大家都不陌生,绝大部分应用中都有这个.使用频率非常之高.但系统对它的支持并不好,自带的 PagerTabStrip 和 PagerTitleStrip 太弱,很难 ...

  5. 什么是网络套接字(Socket)?

    什么是网络套接字(Socket)?一时还真不好回答,而且网络上也有各种解释,莫衷一是.下文将以本人所查阅到的资料来说明一下什么是Socket. Socket定义 Socket在维基百科的定义: A n ...

  6. 为多态基类声明virtual析构函数

    一个函数的返回值为基类指针,而当指针指向一个派生类对象,接下来派生类对象被这个基类指针删除的时候,就出现了局部销毁的问题.因为C++指出,当派生类经由一个基类指针被删除,而该基类指针带着一个non-v ...

  7. iOS真机调试步骤(Xcode8.0以上版本)(2015年)

    方法/步骤(转载:http://jingyan.baidu.com/article/22fe7ced20cc073002617f97.html) 获取真机调试的证书,先在本地生成获取证书的文件,找不到 ...

  8. ActiveMQ系列之一:ActiveMQ简介

    ActiveMQ是什么  ActiveMQ是Apache推出的,一款开源的,完全支持JMS1.1和J2EE 1.4规范的JMS   Provider实现的消息中间件 (Message Oriented ...

  9. android 实现淘宝收益图的折线

    实现的效果我一会贴上,我先说下原理,我们知道要实现在canvas上画线,不就是要搞一个paint嘛,然后首先肯定要设置下paint的属性,那么画文字呢,不就是Textpaint吗, 对,就是这么简单, ...

  10. 为什么我们要使用ssh框架技术,及感想

    前言: 在公司从C++转向Java Web方向大概有3个月(11月初-1月底)了.三个月前对Java和Web还几乎是零基础.然后从安装Eclipse,MySQL,tomcat开始,到学习HTML/CS ...