.NET零基础入门之01:开篇及CSharp程序、解决方案的结构
一:为什么选择C#
每个人都有梦想,有些人的梦想就是:成为程序员。最课程(www.zuikc.com)的《零基础c#入门》是试图帮助我们实现这个梦想。
也许你要问:我基础很差怎么办?最课程的《零基础c#入门》假设你基础差到从来没有写过一行程序。当然,我们也相信,本系列学习对于大学本科学的计算机,但是又初入程序员这个行业的同学有很大帮助。
现在,我们言归正传,
为什么选择C#?
为什么要选择C#作为你成为程序员的第一门语言,我们这里归结的原因有3个:
• 首先,C#是一门非常优秀的面向对象编程的语言
凡是对编码感兴趣的同学一定听说过“面向对象编程”这个概念,C#就是为此诞生的,它天然是面向对象的。所以,既然“面向对象编程”是当前IT界的主流,我们选择C#就没有偏离主流方向。
• 其次,C#是当前微软力推的一门开发语言
C#(读作C Sharp),原名Cool(够酷),它发布于2000年6月26日。虽然只有短短十多年时间,但是如果我们现在使用微软的技术在Windows平台上来开发一般应用,我很难想象得出还有什么语言被C#更合适。
• 最后,经过多年发展,C#语言很适合入门
C#语法简单,入门容易。它能满足让我们快速成为程序员的愿望,我们的最初实际编程例子,就是一个有意思的“打老鼠”游戏,使用C#,能很快让我们感觉到我们是在写有用的代码,而不是一直在学习,直到某天才能写出有用的代码。
二:使用 CSharp 可以开发什么程序
我们再来看看使用C#可以开发什么样的程序:
首先,使用C#可以用来开发传统的Windows窗体程序。比如QQ、暴风影音,比如Word、Visual Studio等,它们都是窗体程序,且不论它们本身是什么开发的,但是现在我们都可以使用C#来进行开发。
其次,使用C#还可以开发网站程序,而且,C#也成为了使用微软技术进行网站开发几乎首选且唯一的语言。VB.NET,Asp,那都不是主流,甚至连非主流的快算不上了。
另外,没错,目前比较酷的一种C#的应用,那就是Windows Phone平台的开发。使用C#,我们可以很方便的在当前最热门的移动平台(包括平板)上进行开发,我们可以将我们写的应用程序上传到微软的应用程序商店中,让别人来使用你的程序。
除此之外,我们可以在以上平台上进行游戏的开发,这是一个内容分支,之所有把它单独列出来,是因为喜爱编码的我们很大程度上都是游戏爱好者,而使用C#可以让我们多平台上开发自己的游戏。现在,借助于一些第三方的框架,我们可以使用C#来开发游戏并部署到IOS和安卓这样的平台上。
使用C#,我们可以干世界上90%的事情。那么剩下的10%呢,嗯,这个,等我们入门了之后再说吧。
三:使用什么工具来开发 C# 程序
使用什么工具来开发 CSharp 程序呢?首选的当然是微软的Visual Studio,当然,如果我们一定要追求特立独行的话,当然也可以使用记事本来编写代码,然后用.NET Framework的命令来编译成为可执行程序。
业界也有几个其它的工具来开发C#,但是都未形成主流。作为初学者,我们最好就使用Visual Studio,当前的稳定的版本是2013(注意,教学视频中是 2012,但是这不影响我们学习)。
另外一个建议是,我们最好使用英文版,使用中文版,一开始的时候可能入手会简单一些,但是不利于我们成长为专业开发者,因为我们一旦编码经验逐渐增长,在调试过程中,难免会出现一些异常信息,大部分的异常我们虽然都能在中文网站搜索到,但是一些比较难解的异常往往英文网站能提供有效的帮助,如果我们使用英文版,那么英文的异常信息能帮助我们搜索到这些信息。
顺带提一下,如果你的英文还不错,在编码过程中遇到问题想要自行解决的时候,可以到 stackoverflow.com 这个网站寻求帮助,这是目前地球上最繁荣的编码问答类网站,一般来说,多难的问题都可以迅速在该网站上得到解答。中文类网站还有 csdn,博客园等。
Visual Studio的下载地址在微软的官网有:
http://www.microsoft.com/visualstudio/chs/downloads
四:写一个 CSharp 程序需要具备什么基础
好,接下来我们看看写一个程序需要具备什么样的基础知识,见下图的4点:
接下来,我们会让你快速的过一遍以上 4 方面的知识,从 Hello World 控制台程序开始,到本课程完成时候,我们会熟悉上图中的这些知识点。
关于最后一点:数据类型、运算符和控制流,我们要强调一点,我们希望你在编码任务的过程中,如果涉及到了某知识,我们就会对其进行讲解。很多的书本或者课程,大篇幅的讲语法和基础知识,往往会让我们丧失了学习下去的兴趣,我们在这里是要换一个思路,那就是直接写程序,通过写代码,来自然而然的掌握这些基础知识。比如,我们为了讲这些基础知识,就要写两个程序,一个就是非常经典的Hello World,而紧接着,我们就要写一个非常简单的打老鼠的游戏,希望通过这个打老鼠的游戏让大家建立起这样的信心:没错,即便我只掌握有限的C#知识,我也能写一个比较有意思的程序。
五:CSharp 程序、解决方案的结构
看看我们如何来创建一个最简单的应用程序。
首先来学会如何新建一个C#程序,首先,打开VS,然后选择New->Project:
这个时候会出现如下的UI:
在上图中,红色数字1、2、3、4、5处分别指的是:
1,指的是我们要创建的应用程序的类型(也称之为项目类型,所以我们刚才的操作是:New->Projcet),这里我们选择的是我们要创建一个Windows程序;
2,指的是我们选择要创建一个控制台程序(即项目类型为:控制台应用程序),即Console Application;
3,指的是应用程序的名称(即当前这个控制台应用程序的名称),在这里,我个人觉得可能“Name”变成“Project Name”更有利于初学者识别该概念;
4,就是咱们要创建的这个程序的路径了;
5,要记住,每个项目,都会属于一个解决方案,在这里我们输入解决方案的名字。我们创建这个控制台应用程序(项目)的时候,VS会为我们自动创建一个解决方案。它们之间的关系是,项目属于解决方案,一个解决方案可以带多个项目。
点击确定,VS就会为我们创建这个应用程序,如下:
我们输入一行代码:
Console.WriteLine("Hello World!");
(上图中红框处),然后我们运行起来,选择菜单中的:“Debug->Start Without Debugging”,当然,也可以使用快捷键“Ctrl+F5”:
运行起来的效果如下,即在Windows的控制台下输出“Hello World!”:
六:解决方案和工程是如何组织的
上面,我们以最快速的方式让“Hello World”运行起来了,现在我们需要回过头来看看整个应用程序是如何被组织起来的。
我们进行如下操作,在“解决方案名”上点右键,选择“Open Folder in File Explorer”:
这个时候,会打开解决方案在硬盘上的位置,如图:
这里面,最重要的就是上图红框中的两个实体,“MyFirstSolution.sln”代表的就是我们的解决方案,而“MyFirstProject”代表的就是我们的控制台应用程序(项目),现在我们双击“MyFirstProject”,查看该文件夹里面,然后和VS的界面比对一下:
顺着箭头,我们可以找到硬盘上的文件和VS中的文件一一对应的关系:
Program.cs对应Program.cs;
App.config对应App.config(应用程序配置文件,先不用管它);
MyFirstProject.csproj对应VS中的项目“MyFirstProject”;
除了上图中的箭头所指,上图中还有一个红框,在红框内的文件夹下,就放着我们生成的应用程序:MyFirstProject.exe。打开Windows的控制台,把该文件拖到控制台中,运行之,跟我们在VS中使用“Debug->Start Without Debugging”效果是一样的。
步骤1:
步骤2:
七:应用程序是如何被组织
面我们写了“Hello World”这个程序,我们再回到这个界面:
我们需要在看看这个程序本身是如何被组织起来的,也就是说,我们运行这个应用程序,它的整个生命周期是怎么样,它所执行的第一行代码是什么,最后一行代码是什么。
针对上图,我们给出如下结论:
1:任何c#应用程序,都有唯一一个Main函数,它作为整个应用程序的入口;
2:上图中的第12、14行代码就相当于是整个应用程序的第一行和最后一行代码;
3:再复杂的应用程序,其实也就是把上图中的13行变成更复杂的代码而已;
现在,让我们开始写一个稍微复杂一点,也稍微有点意思的程序:打老鼠,这也是我们这趟课程的第一个任务。
微信扫一扫,关注最课程(www.zuikc.com),获取更多我的文章,获取软件开发每日一练
.NET零基础入门之01:开篇及CSharp程序、解决方案的结构的更多相关文章
- # 095 01 Android 零基础入门 02 Java面向对象 02 Java封装 01 封装的实现 03 # 088 01 Android 零基础入门 02 Java面向对象 02 Java封装 03 封装总结 01 封装知识点总结
095 01 Android 零基础入门 02 Java面向对象 02 Java封装 01 封装的实现 03 # 088 01 Android 零基础入门 02 Java面向对象 02 Java封装 ...
- 094 01 Android 零基础入门 02 Java面向对象 02 Java封装 01 封装的实现 03 # 088 01 Android 零基础入门 02 Java面向对象 02 Java封装 02 static关键字 04 static关键字(续)
094 01 Android 零基础入门 02 Java面向对象 02 Java封装 01 封装的实现 03 # 088 01 Android 零基础入门 02 Java面向对象 02 Java封装 ...
- 093 01 Android 零基础入门 02 Java面向对象 02 Java封装 01 封装的实现 03 # 088 01 Android 零基础入门 02 Java面向对象 02 Java封装 02 static关键字 03 static关键字(下)
093 01 Android 零基础入门 02 Java面向对象 02 Java封装 01 封装的实现 03 # 088 01 Android 零基础入门 02 Java面向对象 02 Java封装 ...
- 092 01 Android 零基础入门 02 Java面向对象 02 Java封装 01 封装的实现 03 # 088 01 Android 零基础入门 02 Java面向对象 02 Java封装 02 static关键字 02 static关键字(中)
092 01 Android 零基础入门 02 Java面向对象 02 Java封装 01 封装的实现 03 # 088 01 Android 零基础入门 02 Java面向对象 02 Java封装 ...
- 091 01 Android 零基础入门 02 Java面向对象 02 Java封装 01 封装的实现 03 # 088 01 Android 零基础入门 02 Java面向对象 02 Java封装 02 static关键字 01 static关键字(上)
091 01 Android 零基础入门 02 Java面向对象 02 Java封装 01 封装的实现 03 # 088 01 Android 零基础入门 02 Java面向对象 02 Java封装 ...
- 090 01 Android 零基础入门 02 Java面向对象 02 Java封装 01 封装的实现 03 # 088 01 Android 零基础入门 02 Java面向对象 02 Java封装 01 封装的实现 04 使用包进行类管理(2)——导入包
090 01 Android 零基础入门 02 Java面向对象 02 Java封装 01 封装的实现 03 # 088 01 Android 零基础入门 02 Java面向对象 02 Java封装 ...
- 089 01 Android 零基础入门 02 Java面向对象 02 Java封装 01 封装的实现 03 # 088 01 Android 零基础入门 02 Java面向对象 02 Java封装 01 封装的实现 03 使用包进行类管理(1)——创建包
089 01 Android 零基础入门 02 Java面向对象 02 Java封装 01 封装的实现 03 # 088 01 Android 零基础入门 02 Java面向对象 02 Java封装 ...
- 088 01 Android 零基础入门 02 Java面向对象 02 Java封装 01 封装的实现 02 封装的代码实现
088 01 Android 零基础入门 02 Java面向对象 02 Java封装 01 封装的实现 02 封装的代码实现 本文知识点:Java封装的代码实现 说明:因为时间紧张,本人写博客过程中只 ...
- 087 01 Android 零基础入门 02 Java面向对象 02 Java封装 01 封装的实现 01 封装的概念和特点
087 01 Android 零基础入门 02 Java面向对象 02 Java封装 01 封装的实现 01 封装的概念和特点 本文知识点:封装的概念和特点 说明:因为时间紧张,本人写博客过程中只是对 ...
随机推荐
- 既使用maven编译,又使用lib下的Jar包
<build> <finalName>xxx</finalName> <plugins> <plugin> <groupId>o ...
- 通俗讲解transform3D变换时css各属性的作用与搭配
当没有浏览器兼容性限制时,就大胆地使用transiton的3D效果吧,前端也要做不一样的烟火! *常用的3D效果 rotateX/rotateY/rotateZ/rotate3dtranslateX/ ...
- poj-2421-最小生成树刷题
title: poj-2421-最小生成树刷题 date: 2018-11-20 20:30:29 tags: acm 刷题 categories: ACM-最小生成树 概述 做了几道最小生成树的题, ...
- 大学启示录I 浅谈大学生的学习与就业
教育触感 最近看了一些书,有了一些思考,以下纯属博主脑子被抽YY的一些无关大雅的思考,如有雷同,纯属巧合.. 现实总是令人遗憾的,我们当中太多人已经习惯于沿着那一成不变的"典型成功道路&qu ...
- 什么是 "use strict"? 使用它的好处和坏处分别是什么?
ECMAscript 5添加了第二种运行模式:"严格模式"(strict mode).顾名思义,这种模式使得Javascript在更严格的条件下运行. 设立"严格模式&q ...
- Linux学习笔记08—如何关闭防火墙
Linux系统下面自带了防火墙iptables,iptables可以设置很多安全规则.但是如果配置错误很容易导致各种网络问题,那么如果要关闭禁用防火墙怎么操作呢,咗嚛本经验以centos系统为例演示如 ...
- Hadoop系列之(三):使用Cloudera部署,管理Hadoop集群
1. Cloudera介绍 Hadoop是一个开源项目,Cloudera对Hadoop进行了商业化,简化了安装过程,并对hadoop做了一些封装. 根据使用的需要,Hadoop集群要安装很多的组件,一 ...
- 微信小程序自定义组件封装及父子间组件传值
首先在我们可以直接写到需要的 page 中,然后再进行抽取组件,自定义组件建议 wxzx-xxx 命名 官网地址:https://developers.weixin.qq.com/miniprogra ...
- 使用 IntraWeb (13) - 基本控件之 TIWLabel、TIWLink、TIWURL、TIWURLWindow
TIWLabel // TIWLink //内部链接 TIWURL //外部链接 TIWURLWindow //页内框架, 就是 <iframe></iframe> TIWLa ...
- SGU 275. To xor or not to xor (高斯消元法)
题目链接:http://acm.sgu.ru/problem.php?contest=0&problem=275 题意:给你n个数,可以选择任意个数异或,但是要使得最后的异或值最大. 我们把每 ...