第 2 章 来点C#的感觉

在介绍C#语言的基本特性之前,让我们来点C#的感觉,通过亲手创建一个简单的控制台程序,叩开C#的大门!控制台应用程序没有图形化的界面,它类似于Windows操作系统中的命令行窗口。

2.1 开发环境的搭建

用C#语言开发应用程序,首先要搭建好相应的开发环境。学过C语言的人都知道,Turbo C是C语言的开发工具,而Visual Studio 2010(简称VS2010)或者Visual Studio 2010 Express(简称VSE)则是C#语言的开发工具。

与其他语言相比,C#开发环境的搭建过程相当简单。我们只需购买下载Visual Studio 2010的安装包,运行安装包中的Setup.exe可执行文件,然后点击界面中一连串的“下一步”按钮,就可以很方便地搭建起C#的开发环境。下面来看具体的搭建步骤。

(1) 运行安装包中的Setup.exe文件,此时你将看到如图2-1所示的安装界面。

图 2-1

(2) 单击图2-1窗体中的“安装Microsoft Visual Studio 2010”,之后你将看到如图2-2所示的安装向导界面。

图 2-2

(3) 单击图2-2中“下一步”按钮,打开如图2-3所示的窗体。

图 2-3

(4) 继续单击“下一步”按钮,将出现如图2-4所示的选择安装功能界面。此时你可以选择完全安装或者自定义安装模式,如果只想安装Visual C#的开发环境,那就选择自定义安装,勾选掉其他语言。不过,一般选择全部安装模式。

图 2-4

(5) 单击“安装”按钮,这样Visual Studio 2010专业版就开始安装了,此时你将看到如图2-5所示的安装过程窗体。此外,Visual Studio除了专业版外,还有旗舰版、高级版和专业测试版等,如需安装其他版本,可自行购买对应的安装包文件。

图 2-5

(6) 所有组件安装完成之后,你会看到如图2-6所示的安装完成窗体。

图 2-6

(7) 单击完成窗体中的“完成”按钮或右上角的红色关闭按钮,就完成了C#开发环境的搭建。接下来我们就可以利用Visual Studio 2010来创建自己的第一个控制台程序了。

2.2 创建“欢迎你”应用程序

搭建好开发环境后,让我们一起动手,创建一个用来显示“欢迎你”的控制台程序,初步体验C#的感觉。

2.2.1 创建控制台项目

通过VS创建控制台程序的方法非常简单,我们只需依次选择文件→新建→项目等菜单项,然后在弹出的窗口中选择我们想要创建的项目类型就可以了。下面具体介绍创建步骤。

(1) 在VS中依次选择文件→新建→项目等菜单项,如图2-7所示。

图 2-7

(2) 在VS显示窗体的“已安装的模板”中选择“Visual C#”节点,然后选择“控制台应用程序”。你可以修改“名称”文本框中的默认文本(项目名称),也可以单击“位置”文本框来指定程序存储的位置。这里我把项目名称修改为WelcomeYou,具体效果如图2-8所示。

图 2-8

(3) 单击图2-8中的“确定”按钮。

(4) 在Program.cs文件里添加如下代码:

namespace WelcomeYou
{// "欢迎你"的控制台程序class Program{static void Main(string[] args){// 定义输出文本变量string welcomeText = "欢迎你";// 输出文本到控制台Console.WriteLine(welcomeText);// 让控制台程序可见,直到用户按下任意字符为止Console.ReadKey();}}
}

经过上面的步骤后,你就完成了自己第一个控制台程序的创建。接下来,需要做的事情就是使上面的代码运行起来。

2.2.2 编译和运行程序

在第1章中,我为大家介绍了C#代码运行起来需要经过两个阶段。

第一个阶段:将C#代码编译生成包含CIL代码的DLL或EXE文件。

第二个阶段:将CIL代码编译生成本机代码。

在这里,我将先后通过两种方式将C#代码编译成CIL代码,它们分别为:通过Visual Studio 2010编译和运行,以及通过命令行编译和运行。

1. 通过Visual Studio 2010编译和运行

在Visual Studio 2010中,可以有3种方式去编译和运行一段程序。

  • 单击“调试”菜单,选择“启动调试”菜单项,或选择“开始执行”(不调试)菜单项,如图2-9所示。

    图 2-9

  • 单击工具栏上的“启动调试”按钮直接运行,如图2-10所示。

    图 2-10

  • 直接按F5快捷键来启动调试和运行,或按Ctrl+F5快捷键来只启动运行但不进行调试。

上面介绍了两种启动程序的方式,分别为启动调试(对应快捷键是F5)和运行但不启动调试(对应快捷键是Ctrl+F5)。它们的区别是:前者允许在运行过程中中断,并进行单步执行,这样就可以通过在源码中设置断点来进行单步调试,以此来查看变量的值;后者仅仅编译并运行,无法对程序进行调试。

在程序开发过程中,用到最多的是启动调试的方式,因为这样我们可以通过单步调试来发现程序出错的地方。

按F5快捷键运行你的控制台程序,你将看到如图2-11所示的运行结果。

图 2-11

从图2-11中可以看出,程序输出结果与代码中要实现的预期结果一样,从而确认程序的正确性。

2. 通过命令行编译和运行

除了上面介绍的方式外,你还可以通过命令行的方式来对C#代码进行编译。你可以依次单击开始→所有应用程序→Microsoft Visual Studio 2010→Visual Studio Tools→Visual Studio 2010(2010)来打开命令行窗口,然后在打开的命令行窗口中,输入如下命令:

csc /out:D:\WelcomeYou.exe E:\图书\CSharp\Chapter02\WelcomeYou\WelcomeYou\Program.cs

输入完成后,按下Enter键来执行命令。命令执行成功后你将看到如图2-12所示的结果,并且在D盘根目录下,将生成WelcomeYou.exe可执行文件。

图 2-12

csc.exe的语法为:

csc [options] sourceFiles

其中sourceFiles是一个或多个C#源文件所在的位置。表2-1列出了csc.exe的一些常用命令选项,更多的命令选项可通过在命令行中输入csc /?来查看(如图2-13所示),也可以在MSDN中进行查看,链接为http://msdn.microsoft.com/zh-cn/library/6s2x2bzy(v=vs.100).aspx。

表 2-1 csc.exe的常用命令选项

选项

说明

/out:filename

指定输出文件名称

/target:exe

创建.exe文件,这也是默认选项

/target:library

创建.dll类库文件

/target:module

创建可以添加到另一程序集的模块

/target:winexe

创建Windows可执行程序

/platform:string

指定可以运行的平台,srting可以为x86、x64、Itanium或anycpu(默认值)

图 2-13

2.2.3 对程序进行调试

对于开发者来说,调试程序的能力是不可或缺的。当程序出现错误时,我们需要对程序进行调试来发现代码中存在的问题,继而通过修改代码来解决问题。下面详细介绍程序调试的方法。

利用Visual Studio 2010进行程序调试的步骤如下。

(1) 在需要调试的C#代码中设置断点,方法为:单击代码行的最前面来设置断点。设置成功后,你将看到如图2-14所示的效果。

图 2-14

(2) 按F5启动调试运行程序,程序在运行到设置断点的位置时会暂停运行,你将看到如图2-15所示的效果。注意,此时断点位置的代码并没有执行。

图 2-15

(3) 按F10或F11来单步执行代码。

按F10与按F11的区别在于:当中断的代码行是方法时,按F10不会进入方法的定义中进行单步执行,而是直接跳过方法中的代码,直接执行方法下一行的代码;而按F11则会进入到方法的定义中单步执行。

在调试期间,可以通过监视窗口来查看变量的值,还可以调用栈窗口来查看程序的调用过程,如图2-16所示。其中,最有用的信息就是栈窗口中的调用过程信息:程序在运行过程中可能会遇到程序崩溃的情况,此时可以通过查看调用栈来确定出错的位置,再通过监视窗口确定具体是由哪个变量引起的错误,从而确定程序出错的原因。

图 2-16

2.3 归纳总结

本章带领大家创建了一个控制台程序,并通过该程序阐述了编译和执行程序的方法,最后给出了调试应用程序步骤。通过本章的内容,大家已经对如何编写C#代码和如何调试程序有了一个初步的认识。在下一章中,我将为大家详细地介绍C#语言的基础知识。

from: http://www.ituring.com.cn/book/tupubarticle/9044

Learning hard C#学习笔记 孤军深入相关推荐

  1. Deep learning with Python 学习笔记(9)

    神经网络模型的优化 使用 Keras 回调函数 使用 model.fit()或 model.fit_generator() 在一个大型数据集上启动数十轮的训练,有点类似于扔一架纸飞机,一开始给它一点推 ...

  2. Deep learning with Python 学习笔记(6)

    本节介绍循环神经网络及其优化 循环神经网络(RNN,recurrent neural network)处理序列的方式是,遍历所有序列元素,并保存一个状态(state),其中包含与已查看内容相关的信息. ...

  3. Computer vision: models, learning and inference 学习笔记1:引言

    学习笔记1:引言 目的 model,learning and inference 的含义 独特之处:基于模型的知识结构体系 最关键的是:模型(model) 目的 学习<computer visi ...

  4. 原创 | 斯坦福Machine Learning with Graphs 学习笔记(第一讲)

    作者:林夕 本文长度为2900字,建议阅读9分钟 本文为大家介绍图网络的基本概念.网络的应用以及图的结构. 标签:机器学习 目录 一.Why Networks 二.网络的应用     2.1 应用领域 ...

  5. 决策树(chap3)Machine Learning In Action学习笔记

    优点:计算复杂度不高,输出结果易于理解,对中间值的缺失不敏感,可以处理不相关特征数据. 缺点:可能会产生过度匹配问题. 适用数据类型:数值型(必须离散化)和标称型. 决策树创建分支的伪代码函数crea ...

  6. Learning hard C#学习笔记 C#简介

    第 1 章 你真的了解C#吗 在正式介绍C#的语法和特性之前,让我们首先来了解下它的发展历程.因为只有知道了C#的概貌和由来,积累了必要的背景知识,我们才能更好地掌握C#,进而使用C#来编程. 1.1 ...

  7. 原创 | 斯坦福Machine Learning with Graphs 学习笔记(第二讲)

    作者:于媛,十三鸣 本文长度为3300字,建议阅读10+分钟 本文为大家介绍常用的网络属性和经典的网络模型. 标签:机器学习 [ 导读 ]在研究网络的时候,我们往往需要从结构层面对网络进行分析,网络属 ...

  8. 34_pytorch,动量与lr衰减(momentum,learning rate)--学习笔记

    1.31.动量与学习率衰减 1.31.1.动量 1.31.2.学习率衰减 1.31.动量与学习率衰减 1.31.1.动量 (1)没有引入动量 (2)引入动量后 从图中可以看到,引入动量后loss函数更 ...

  9. word2vec Parameter Learning Explained 论文学习笔记

    文章内容 1.word2vec模型:skipgram和CBOW 2.训练优化:hierarchical softmax 和 negative sampling. 一.CBOW模型 CBOW完成的事情是 ...

最新文章

  1. html5主要是针对哪方面行优化,前端知识点总结(HTML篇)
  2. H3C交换机配置本地和远程登录用户名和密码
  3. ubuntu中如何解压rar文件
  4. Hybris产品主数据的价格折扣维护
  5. ubuntu中mysql怎么退出命令_ubuntu的Linux下安装MySQL
  6. 输油管道问题 测试数据_建立测试时要考虑的数据管道
  7. 2019-02-25 SQL:cast(itemvalue as decimal(19,4))
  8. 2018年第九届蓝桥杯【C++省赛B组】【第六题:递增三元组】——二分解法
  9. 【BZOJ 4503】4503: 两个串 (FFT)
  10. Java for selenium(webdriver) 环境搭建
  11. 自己读Go程序设计语言的一些总结(更新ing...)
  12. 一、计算机系统基础知识
  13. linux步进电机驱动程序,基于S3C2440嵌入式Linux的步进电机驱动程序
  14. Linux安装JDK-8-附有百度网盘链接
  15. Python:暴力破解密码
  16. AttributeError: module ‘dask‘ has no attribute ‘delayed‘问题
  17. HTL6033是一款专用于3串锂电池或聚合物电池的保护芯片
  18. 访问localhsot:8080需要密码
  19. iPics2Go: iPhone变身扫描仪
  20. 人脸识别技术有哪些方案

热门文章

  1. postman中 form-data、x-www-form-urlencoded、raw、binary的区别--转
  2. spring-security-oauth2注解详解
  3. solr服务器的查询过程
  4. 大象转身,地表最强投行高盛开启转型之路
  5. 基于Java语言构建区块链(五)—— 地址(钱包)
  6. java自定义jsp标签_Javaweb自定义jsp标签
  7. Shell遍历hadoop目录的批量操作
  8. 【二叉树详解】二叉树的创建、遍历、查找以及删除等-数据结构05
  9. RocketMQ:消费端的消息消息队列负载均衡与重新发布机制源码解析
  10. flash期末作业成品_基于“新工科”的工科物理作业模式研究