内容提要:

声明变量;变量的初始化和作用域;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. jQuery animate easing使用方法

    从jQuery API 文档中可以知道,jQuery自定义动画的函数.animate( properties [, duration] [, easing] [, complete] )有四个参数: ...

  2. 如何改写WebApi部分默认规则

    为什么要改 最近公司在推广SOA框架,第一次正经接触这种技术(之前也有但还是忽略掉吧),感觉挺好,就想自己也折腾一下,实现一个简单的SOA框架 用过mvc进行开发,印象之中WebApi和Mvc好像是一 ...

  3. nginx入门手册(一)

    1.nginx进程: nginx会启动多个进程: 一个主进程Master. 几个工作进程worker. 缓存加载器进程 缓存管理器进程 master主要工作: 1. 读取并验正配置信息: 2. 创建. ...

  4. Java系列--第五篇 基于Maven的SSME之Token及Parameterized单元测试

    本来在第四篇要说完的,但是写着写着,我觉得内容有点多起来了,所以就另开这篇,在这里专门讲述Token的定义,JSP自定义标签以及如何用Parameterized的来做单元测试. 1,新建包com.va ...

  5. 3月26日html(七)window document

    ---恢复内容开始--- 1.Window.document对象 一.找到元素: docunment.getElementById("id"):根据id找,最多找一个:     v ...

  6. Linux下的管道命令有这些:

    Linux下的管道命令有这些: 选取命令:cat grep 排序命令:sort wc uniq 双向重定向:tee 字符转换命令: tr, col, join, paste, expand 切割命令: ...

  7. android 巧用finish方法

    在android应用开发中,我们从一个activity跳到另一个activity时,我么要用到Intent: eg:Intent intent = new Intent(A.this,B.class) ...

  8. .NET知识点总结二(笔记整合)

    19.什么是类型? 用来定义某一种数据在内存里开辟空间的大小,还可以预置操作此种类型数据的相关方法 20.this关键字在方法中使用时所代表的含义 this指的是当前类的对象,或者父类的类的对象(ba ...

  9. 解压和生成 system.img&data.img ( yaffs2格式)

    做为一名Android手机用户, 拿到system.img和data.img不是件难事 有这两个image可以做什么呢? ^_^可以做很多事,比如删除一些不想用的系统应用(/system/app目录下 ...

  10. selenium太有爱,我已离不开!!!

    自动化测试,超有用. PROXY,PLUGIN,PROFILE,WINDOWS HANDLE个个搞定!!! from selenium import webdriver from selenium.c ...