核心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#的更多相关文章

  1. Asp.Net WebApi核心对象解析(下篇)

    在接着写Asp.Net WebApi核心对象解析(下篇)之前,还是一如既往的扯扯淡,元旦刚过,整个人还是处于晕的状态,一大早就来处理系统BUG,简直是坑爹(好在没让我元旦赶过来该BUG),队友挖的坑, ...

  2. 如何一步一步用DDD设计一个电商网站(一)—— 先理解核心概念

    一.前言     DDD(领域驱动设计)的一些介绍网上资料很多,这里就不继续描述了.自己使用领域驱动设计摸滚打爬也有2年多的时间,出于对知识的总结和分享,也是对自我理解的一个公开检验,介于博客园这个平 ...

  3. 如何一步一步用DDD设计一个电商网站(三)—— 初涉核心域

    一.前言 结合我们本次系列的第一篇博文中提到的上下文映射图(传送门:如何一步一步用DDD设计一个电商网站(一)—— 先理解核心概念),得知我们这个电商网站的核心域就是销售子域.因为电子商务是以信息网络 ...

  4. JS核心系列:浅谈原型对象和原型链

    在Javascript中,万物皆对象,但对象也有区别,大致可以分为两类,即:普通对象(Object)和函数对象(Function). 一般而言,通过new Function产生的对象是函数对象,其他对 ...

  5. JS核心系列:浅谈 call apply 与 bind

    在JavaScript 中,call.apply 和 bind 是 Function 对象自带的三个方法,这三个方法的主要作用是改变函数中的 this 指向,从而可以达到`接花移木`的效果.本文将对这 ...

  6. 浅谈 jQuery 核心架构设计

    jQuery对于大家而言并不陌生,因此关于它是什么以及它的作用,在这里我就不多言了,而本篇文章的目的是想通过对源码简单的分析来讨论 jQuery 的核心架构设计,以及jQuery 是如何利用javas ...

  7. ASP.NET Core的路由[2]:路由系统的核心对象——Router

    ASP.NET Core应用中的路由机制实现在RouterMiddleware中间件中,它的目的在于通过路由解析为请求找到一个匹配的处理器,同时将请求携带的数据以路由参数的形式解析出来供后续请求处理流 ...

  8. Asp.Net WebApi核心对象解析(上篇)

    生活需要自己慢慢去体验和思考,对于知识也是如此.匆匆忙忙的生活,让人不知道自己一天到晚都在干些什么,似乎每天都在忙,但又好似不知道自己到底在忙些什么.不过也无所谓,只要我们知道最后想要什么就行.不管怎 ...

  9. C++随笔:.NET CoreCLR之corleCLR核心探索之coreconsole(2)

    这篇文章是上篇的续集,本文将会继续介绍coreconsole.cpp里面的逻辑.也许大家会看一些CLR的书,我承认我没有看过,因为我觉得一个人,他再NB,那也是他自己的眼光,而且说句难听的,CLR也不 ...

  10. 【算法】(查找你附近的人) GeoHash核心原理解析及代码实现

    本文地址 原文地址 分享提纲: 0. 引子 1. 感性认识GeoHash 2. GeoHash算法的步骤 3. GeoHash Base32编码长度与精度 4. GeoHash算法 5. 使用注意点( ...

随机推荐

  1. 浅谈 js 正则之 test 方法

    原文:浅谈 js 正则之 test 方法 其实我很少用这个,所以之前一直没注意这个问题,自从落叶那厮写了个变态的测试我才去看了下这东西.先来看个东西吧. var re = /\d/; console. ...

  2. 如何清除应用程序承载 WebBrowser 控件时缓存

    原文:如何清除应用程序承载 WebBrowser 控件时缓存 http://support.microsoft.com/kb/262110/zh-cn察看本文应用于的产品 function loadT ...

  3. new 和delete

    转自:http://www.cnblogs.com/charley_yang/archive/2010/12/08/1899982.html 一直对C++中的delete和delete[]的区别不甚了 ...

  4. iOS 学习资料汇总

    (适合初学者入门) 本文资料来源于GitHub 一.视频教程(英文) Developing iOS 7 Apps for iPhone and iPad斯坦福开放教程之一, 课程主要讲解了一些 iOS ...

  5. js 正则之检测素数

    原文:js 正则之检测素数 相信很多人应该看过这篇文章,我第一次看到的时候是11年的样子,那时候学vbs的时候看过这个问题.原文<检查素数的正则表达式>,在文章里已经解释了他是怎么判断的, ...

  6. 临时和永久修改oracle sysdate的默认输出格式

    1.当前会话有效 alter session set NLS_DATE_FORMAT='YYYY-MM-DD:HH24:MI:SS'; 2.永久生效 sys用户登入后执行如下命令 然后重启数据库使其生 ...

  7. 分享UI设计模型

    UI设计模型是可重用的界面设计解决方案,可以让开发人员少走弯路,节约不少开发时间.下面慧都小编跟大家分享6个很有用的UI设计模型资源,希望对你有用: 1.UI Patterns 由一个丹麦人开发的UI ...

  8. js获取编辑框游标的位置

    代码如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w ...

  9. javascript 学习总结(一)

    1.字符转换 var s1 = "01"; var s2 = "1.1"; var s3 = "z";//字母'z'无法转换为数字,所以或返 ...

  10. SSIS Package to Call Web Service

    原文 SSIS Package to Call Web Service SSIS Package to Call Web Service. You can Call WebService from S ...