内容提要:

声明变量;变量的初始化和作用域;C#的预定义数据类型;在C#程序中使用条件语句、循环和跳转语句指定执行流;枚举;名称空间;

Main()方法;基本命令行C#编译器选项;使用System.Console执行控制台I/O;使用内部注释和文档编制功能;预处理指令;C#编程的推荐规则和约定。

一、第一个C#程序

Q:如何利用c#命令行编译器(csc.exe)编译一个程序?

A: css ClassName.cs  (Tool :Visual studio 2010 Command Prompt)

Q:C# 区分大小写的吗?

A:C#区分大小写的。提示:对于控制台应用程序、Windows应用程序都有一个入口点——Main()方法(M一定是大写的)

二、变量

Q:C# 定义变量的语法?

A: DataType Identifier;

Q: C# 声明变量的例子

A:

提示:变量的初始化是C#强调安全性的一个例子。

Q:C#如何确保变量使用前进行初始化?

A:方法一:变量是类或结构中的字段,如果没有显式初始化,创建这些变量时,其默认值就是0;方法二:方法的局部变量必须在代码中显式初始化,之后才能在语句中使用它们的值。

Q:类型推断

A:类型推断(type reference)使用var 关键字。编译时进行,因为运行时都是类型安全的代码。

Q:类型推断的规则

A:(1)变量必须初始化。否则,编译器就没有推断变量类型的依据。(2)初始化器({})不能为空。(3)初始化器必须放在表达式中。(4)不能把初始化器设置为一个对象,除非在初始化器中创建了一个新对象。

Q:确定变量作用域的规则?

A: (1)只要类在某个作用域内,其字段(成员变量)也在某个作用域内。(2)局部变量存在于表示声明该变量的块语句或方法结束的右括号之前的作用域内。

(3)在for、while或类似语句中声明的局部变量存在于该循环体内。

Q:字段和局部变量的作用域冲突

A:某些情况下,可以区分名称相同(完全限定的名称不同)、作用域相同的两个标识符。编译器只允许声明第2个变量。原因是C#在变量之间有一个基本区分,它把类级别声明的变量看作字段,而把在方法中声明的变量看作局部变量。例如:

Q: 什么是常量?

A:常量是其值在使用过程中不会发生变化的变量。 语法: 在变量之前加const关键字。

Q: 常量的特点?

A:(1)常量必须在声明时初始化。指定以后就不能再改变了。(2)常量的值必须能在编译时用于计算。(3)常量总是静态的。不允许在常量中声明static。

Q: 在程序中使用常量的好处?

A:(1)由于使用易于读取的名称替代了教难读懂的数字或者字符串,常量使程序变得更易于阅读。(2)常量使程序更易于修改。(3)常量更容易避免程序出错

三、预定义数据类型

Q: C#预定义类型

A:C#有15种预定义类型,13个是值类型(8个整型(sbyte,short,int,long,byte,ushort,uint,ulong),2个浮点型(float,double),1个decimal类型,1个char类型,1个bool类型),两个是引用类型(string和Object)。

Q: 预定义的整型类型?

A:sbyte(8位有符号整数);short(16位有符号整数);int(32位有符号整数);long(64位有符号整数);byte(8位无符号整数);ushort(16位无符号整数);uint(32位无符号整数);ulong(64位无符号整数);

提示:decimal类型不是基本类型,所以计算时会有性能损失。

Q:使用Object类型可以解决的两个问题:

A:(1)可以使用Object引用绑定任何子类型的对象。(2)Object类型执行许多一般用途的基本方法,包括Equals()、GetHashCode()、GetType()和ToString()。

四、流控制

Q:条件语句?

A:if...else;switch...case

提示:对于switch...case中如果有一条case语句为空,就可以从这个case跳到下一个case上。特别注意任何两个case语句的值不能相同。

Q:循环语句?

A:for;foreach;while;do....while;

Q:跳转语句?

A:goto;break;continue;return;

五、枚举

Q: 什么是枚举?

A:枚举是用户自定义的整数类型。在声明一个枚举时,要指定该枚举的实例可以包含的一组可接受的值。

Q:使用枚举的优势?

A: (1)枚举可以使代码更易于维护,有助于确保给变量指定合法的、期望的值。(2)枚举是代码更清晰,允许用描述性的名称表示整数值。(3)枚举也使代码更易于键入。

六、名称空间

Q:名称空间?

A:名称空间提供了一种组织相关类和其他类型的方式。与文件或组件不同,名称空间是一种逻辑组合,而不是物理组合。

提示:注意不允许在另一个嵌套的名称空间中声明多部分的名称空间。

Q:using关键字的特别用处?

A:using关键字的另一个用途就是给类和名称空间指定别名。语法:using alias = NamespaceName;

七、Main方法

Main方法必须是类或结构的静态方法,并且其返回类型必须是int或void。

Q:如何处理多个Main方法?

A:对于控制台或Windows应用程序,如果有多个Main方法编译器就会返回编译错误。对于一个类中有多个Main方法可以在编译时指定Main方法的方式来告诉编译器那个Main方法作为程序的入口点。csc ClassName.cs /main: Namespace

Q: 给Main方法传递的参数

A:例如 ArgsExample编译后,可以这样的传递参数:ArgsExample /a /b /c。接受到的一个string数组时由/a /b /c组成。

八、编译C#文件的相关指令

Q: 如何指定编译为控制台应用程序、带清单的类库、没有清单的组件和Windows应用程序?

A:默认情况下编译为控制台应用程序,也可以用(/t:exe)指定;带清单的类库(/t:library);没有清单的组件(/t:module);Windows应用程序(/t:winexe

Q:如何指定编译生成的输出文件名?

A:使用选项(/out);注意/out和/t选项必须在编译文件的文件名前面。

九、控制台I/O

Q:预定义类型的主要格式字符串

A:

使用注释和使用预处理指令,参考MSDN。C#编程规则,可以参考<<.NET设计规范:约定、惯用法与模式>>

小结

本章主要介绍一些C#的基本语法,和编写C#应用程序需要掌握的内容。

C#高级编程第2章-核心C#的更多相关文章

  1. ASP.NET MVC5 高级编程 第3章 视图

    参考资料<ASP.NET MVC5 高级编程>第5版 第3章 视图 3.1 视图的作用 视图的职责是向用户提供界面. 不像基于文件的框架,ASP.NET Web Forms 和PHP ,视 ...

  2. ASP.NET MVC5 高级编程 第5章 表单和HTML辅助方法

    参考资料<ASP.NET MVC5 高级编程>第5版 第5章 表单和HTML辅助方法 5.1 表单的使用 5.1.1 action 和 method 特性 默认情况下,表单发送的是 HTT ...

  3. ASP.NET MVC5 高级编程 第2章 控制器

    参考资料<ASP.NET MVC5 高级编程>第5版 第2章 控制器 控制器:响应用户的HTTP 请求,并将处理的信息返回给浏览器. 2.1 ASP.NET MVC 简介 MVC 模式中的 ...

  4. 《Node.js高级编程》之Node 核心API基础

    Node 核心API基础 第三章 加载模块 第四章 应用缓冲区 第五章 事件发射器模式简化事件绑定 第六章 使用定时器制定函数执行计划 第三章 加载模块 本章提要 加载模块 创建模块 使用node_m ...

  5. 《asp.net mvc3 高级编程》第二章 控制器

    一.控制器的角色 MVC模式中的控制器(Controller)主要负责响应用户的输入,并且在响应时通常会修改模型(Model).通过这种方式,MVC模式中的控制器主要关注的是应用程序流,输入数据的处理 ...

  6. C#高级编程第1章-.NET体系结构

    内容提要: (1)编译和运行面向对象.NET代码 (2)IL/MSIL(Microsoft Intermediate Language)中间语言的优点 (3)值类型与引用类型 (4)数据类型化 (5) ...

  7. UNIX环境高级编程 第13章 守护进程

    守护进程daemon是一种生存周期很长的进程.它们通常在系统引导时启动,在系统关闭时终止.守护进程是没有终端的,它们一直在后台运行. 守护进程的特征 在Linux系统中,可以通过命令 ps -efj ...

  8. UNIX环境高级编程 第8章 进程控制

    本章是UNIX系统中进程控制原语,包括进程创建.执行新程序.进程终止,另外还会对进程的属性加以说明,包括进程ID.实际/有效用户ID. 进程标识 每个进程某一时刻在系统中都是独一无二的,它们之间是用一 ...

  9. UNIX环境高级编程 第7章 进程环境

    本章涉及C/C++程序中main函数是如何被调用的.命令行参数如何传递给main函数.程序的内存空间布局.程序如何使用环境变量.程序如何终止退出. main函数 C程序或C++程序总是从main函数开 ...

随机推荐

  1. SQL 2008 R2 数据库镜像操作

    镜像操作请参考:http://blog.csdn.net/dba_huangzj/article/details/35995083 应用程序数据库连接字符串(带见证服务器即自动故障转移): DBHel ...

  2. HTML5 Canvas图像放大、移动实例1

    1.前台代码 <canvas id="canvasOne" class="myCanvas" width="500" height=& ...

  3. iOS中你必须了解的多线程

    多线程概念详解 什么是进程? 简单的说进程就是我们电脑上运行的一个个应用程序,每一个程序就是一个进程,并且每个进程之间是独立的,每个进程运行在其专用受保护的内存空间内(window系统可以通过任务管理 ...

  4. uva 10260 - Soundex

    题目:编码翻译,有些字母有对应的数字,有的没有,如果连续对应的数字相同只输出一个. #include <iostream> #include <cstdlib> #includ ...

  5. php时间戳与时间转换

    PHP时间大的来分有两种,一是时间戳类型(1228348800),二是正常日期格式(2008-12-4) 所以存到数据库也有两种形式了(真正不止,我的应用就两种),时间戳类型我是保存为字符串的,这个是 ...

  6. C#自定义Attribute值的获取与优化

    C#自定义Attribute值的获取是开发中会经常用到的,一般我们的做法也就是用反射进行获取的,代码也不是很复杂. 1.首先有如下自定义的Attribute [AttributeUsage(Attri ...

  7. ECstore报表不显示解决

    最近研究ECSTORE发现后台报表显示空白,Google了一下发现N多统一的做法,直接往表里插几条数据.呵呵,更深入一点 1.要显示报表功能首先要确保已经配置好contab的定时任务,定时任务能够执行 ...

  8. C++ string类及其函数的讲解

    文章来源于:http://www.cnblogs.com/hailexuexi/archive/2012/02/01/2334183.html C++中string是标准库中一种容器,相当于保存元素类 ...

  9. php 字符编码转换函数 iconv mb_convert_encoding比较

    在使用PHP处理字符串时,我们经常会碰到字符编码转换的问题,你碰到过iconv转换失败吗? 发现问题时,网上搜了搜,才发现iconv原来有bug ,碰到一些生僻字就会无法转换,当然了配置第二个参数时, ...

  10. Hadoop学习历程(四、运行一个真正的MapReduce程序)

    上次的程序只是操作文件系统,本次运行一个真正的MapReduce程序. 运行的是官方提供的例子程序wordcount,这个例子类似其他程序的hello world. 1. 首先确认启动的正常:运行 s ...