核心C#
核心C#
内容提要:
声明变量;变量的初始化和作用域;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#的更多相关文章
- Asp.Net WebApi核心对象解析(下篇)
在接着写Asp.Net WebApi核心对象解析(下篇)之前,还是一如既往的扯扯淡,元旦刚过,整个人还是处于晕的状态,一大早就来处理系统BUG,简直是坑爹(好在没让我元旦赶过来该BUG),队友挖的坑, ...
- 如何一步一步用DDD设计一个电商网站(一)—— 先理解核心概念
一.前言 DDD(领域驱动设计)的一些介绍网上资料很多,这里就不继续描述了.自己使用领域驱动设计摸滚打爬也有2年多的时间,出于对知识的总结和分享,也是对自我理解的一个公开检验,介于博客园这个平 ...
- 如何一步一步用DDD设计一个电商网站(三)—— 初涉核心域
一.前言 结合我们本次系列的第一篇博文中提到的上下文映射图(传送门:如何一步一步用DDD设计一个电商网站(一)—— 先理解核心概念),得知我们这个电商网站的核心域就是销售子域.因为电子商务是以信息网络 ...
- JS核心系列:浅谈原型对象和原型链
在Javascript中,万物皆对象,但对象也有区别,大致可以分为两类,即:普通对象(Object)和函数对象(Function). 一般而言,通过new Function产生的对象是函数对象,其他对 ...
- JS核心系列:浅谈 call apply 与 bind
在JavaScript 中,call.apply 和 bind 是 Function 对象自带的三个方法,这三个方法的主要作用是改变函数中的 this 指向,从而可以达到`接花移木`的效果.本文将对这 ...
- 浅谈 jQuery 核心架构设计
jQuery对于大家而言并不陌生,因此关于它是什么以及它的作用,在这里我就不多言了,而本篇文章的目的是想通过对源码简单的分析来讨论 jQuery 的核心架构设计,以及jQuery 是如何利用javas ...
- ASP.NET Core的路由[2]:路由系统的核心对象——Router
ASP.NET Core应用中的路由机制实现在RouterMiddleware中间件中,它的目的在于通过路由解析为请求找到一个匹配的处理器,同时将请求携带的数据以路由参数的形式解析出来供后续请求处理流 ...
- Asp.Net WebApi核心对象解析(上篇)
生活需要自己慢慢去体验和思考,对于知识也是如此.匆匆忙忙的生活,让人不知道自己一天到晚都在干些什么,似乎每天都在忙,但又好似不知道自己到底在忙些什么.不过也无所谓,只要我们知道最后想要什么就行.不管怎 ...
- C++随笔:.NET CoreCLR之corleCLR核心探索之coreconsole(2)
这篇文章是上篇的续集,本文将会继续介绍coreconsole.cpp里面的逻辑.也许大家会看一些CLR的书,我承认我没有看过,因为我觉得一个人,他再NB,那也是他自己的眼光,而且说句难听的,CLR也不 ...
- 【算法】(查找你附近的人) GeoHash核心原理解析及代码实现
本文地址 原文地址 分享提纲: 0. 引子 1. 感性认识GeoHash 2. GeoHash算法的步骤 3. GeoHash Base32编码长度与精度 4. GeoHash算法 5. 使用注意点( ...
随机推荐
- WIN2003+IIS6+FastCGI+PHP5.4.30的安装配置
原文:WIN2003+IIS6+FastCGI+PHP5.4.30的安装配置 说明:PHP5.5已不支持win2003了,Win2003最高能安装PHP5.4.30. 安装好系统:并且安装好IIS6. ...
- HDU 2544-最短路(最短路spfa)
最短路 Time Limit: 5000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submis ...
- 为WebBrowser的WEB页的Document注册事件的问题
原文:为WebBrowser的WEB页的Document注册事件的问题 当使用WebBrowser,并对其装载的Web页建立Document的事件后,WebBrowser里的页面元素都变得难于操作了, ...
- MonkeyRunner于Windows在下面Eclipse开发环境的搭建步骤(并解决在线Jython配置错误的问题)
网上有一shangdong_chu网友写了一篇文章介绍了如何Eclipse构造MonkeyRunner,他做了叙述一个很好的说明.但我对我的环境试验后会见Jython解析错误的问题,和制品缺少Pyde ...
- Web API-路由(一)
这一篇文章描述了ASP.NET API如何将HTTP请求路由到控制器. 如果你熟悉ASP.NET MVC,Web API路由和MVC路由非常相似,主要的不同地方是Web API使用HTTP方法,而不是 ...
- Linux Mysql 权限相关信息 来源于网络
查看用户权限 show grants for 你的用户 比如: show grants for root@’localhost’; mysql> use mysql; Database chan ...
- C#函数式编程-高阶函数
随笔分类 -函数式编程 C#函数式编程之标准高阶函数 2015-01-27 09:20 by y-z-f, 344 阅读, 收藏, 编辑 何为高阶函数 大家可能对这个名词并不熟悉,但是这个名词所表达的 ...
- 第3章1节《MonkeyRunner源码剖析》脚本编写示例: MonkeyRunner API使用示例(原创)
天地会珠海分舵注:本来这一系列是准备出一本书的,详情请见早前博文“寻求合作伙伴编写<深入理解 MonkeyRunner>书籍“.但因为诸多原因,没有如愿.所以这里把草稿分享出来,所以错误在 ...
- Java 实现迭代器(Iterator)模式
类图 /** * 自己定义集合接口, 相似java.util.Collection * 用于数据存储 * @author stone * */ public interface ICollection ...
- Floodlight controller 线程池模型
官方文档对于ThreadPool的描写叙述是:ThreadPool is a Floodlight module wrapper for a Java's ScheduledExecutor ...