本节主要介绍各种可以用C#编写的应用程序。
文章目录
- [1. 编程学习的捷径](#1. 编程学习的捷径)
- [2. 编写我们的第一个程序--Hello,World!](#2. 编写我们的第一个程序--Hello,World!)
-
- [2.1 Console-控制台](#2.1 Console-控制台)
- [2.2 Windows Forms (Old)](#2.2 Windows Forms (Old))
- [2.3 WPF(Windows Presentation Foundation)](#2.3 WPF(Windows Presentation Foundation))
- 2.4 高版本VS进行C#编程(了解c#还可以做什么)
-
- [2.4.1 ASP.NET Web Forms (Old)](#2.4.1 ASP.NET Web Forms (Old))
- [2.4.2 ASP.NET MVC(Model-View-Controller)*](#2.4.2 ASP.NET MVC(Model-View-Controller)*)
- [2.4.3 Windows Store Application**](#2.4.3 Windows Store Application**)
- [2.4.4 Windows Phone Application*](#2.4.4 Windows Phone Application*)
- [2.4.5 Cloud (windows Azure)](#2.4.5 Cloud (windows Azure))
- [2.4.6 WF(Workflow Foundation)](#2.4.6 WF(Workflow Foundation))
- [2.4.7 WCF(Windows Coinmunication Foundation)*](#2.4.7 WCF(Windows Coinmunication Foundation)*)
- 3. 见识C#编写的各类应用程序
1. 编程学习的捷径
- 编程不是"学"出来的,而是"练"出来的
- 在反复应用中积累,忽然有一天就会"顿悟
- 学习原则
- 从感观到原理:先写程序,不管原理,多写几遍,再看原理会顿悟
- 从使用别人的到创建白己的:
- 必需亲白动手
- 必需学以致用、紧跟实际工作:考虑时间投入及产出,实际工作中用不到的,作为知识储备即可
- 追求实用,不搞"学院派":学习不是为了考试,是为了工作
2. 编写我们的第一个程序--Hello,World!
VS在管理代码的时候解决方案是最高的级别,在一个solution中会包含一个或者多个project。
比较形象的比喻:
有一个汽车经销商,想请你做一个宣传自己商店的软件,让大家知道卖的是什么汽车,价格等信息,为了解决这个需求,你需要提供一个完整的解决方案,也就是solution。
我们知道处理大问题的时候,需要将其划分为小问题,将小问题一个个的解决,逐个击破,将解决方案给出之后,发现有具体的问题需要解决,比如数据存到哪,数据怎么向外界发布,都有谁来响应这些数据,这些都是具体问题,针对某一个具体问题,我们需要使用project来解决,针对具体的问题使用具体的技术。
以下是使用数据库进行不同技术project的案例,当整体作为一个solution的时候,不同技术都有对应的模板可以参考。
VS高级版本支持的模板就更多,支持的技术也就更多,对于一般用户来说,professor版本的就已经足够了。
- Solution解决方案与Project项目
- Solution是针对客户需求的总的解决方案。举例:汽车经销商需要一套销售软件
- Project解决具体的某个问题
- Project模板(对比不同VS版本)
- 分别编写Console、WPF、Windows Forms的Hello World程序
- 初学编程时很重要的两点
- 不要怕见到自己看不懂的东西
- 要能跟着操作,一遍一遍地练习,为的是熟悉手里的工具、培养感觉
使用十种不同的c#语言技术来编写"Hello,World!"程序,让大家都能领略C#的功能。下面打了"*"号的技术都是今年比较新,市场比较好的技术。
2.1 Console-控制台
命令行界面,程序简单,一般都是写给内部用户,有一定计算机基础的。
在VS中"文件"->"新建"->"项目",选择"控制台应用"项目模板,VS会自动创建一个同名的solution(solution的名字是可以修改的)。现在使用"控制台应用"技术解决想要在屏幕上打印出"hello world!"字符串,重新命名
MySolution解决方案中有一个ConsoleHelloWorld的project,project中包含若干的源文件,其中有一个Program.cs,注意C#文件默认是使用.cs来作为扩展名。
当你遇到一些你不熟悉的地方不用害怕,把精力集中在今天的操作上,今天的目的就是在命令行上输出"hello world "字符串。
如果直接运行以下代码:
csharp
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleHelloWorld
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("hello world !");
}
}
}
代码会一闪而过,可以在"调试"中选择如下,这样就可以实现交给用户一样的运行效果
运行结果如下:
2.2 Windows Forms (Old)
Windows Forms是一项比较老的技术,更新的技术是WPF。
- winform给我们准备了一个空的窗口,窗口编程的时候术语为窗体,有了form之后直接点击"运行"其实就可以运行- 了,左侧为"工具箱",拖入一个"TextBox"、"Button"控件。
- 修改控件属性,属性包括了控件上的名字、尺寸、显示的文字信息
- 在编程中尽量给每一个控件起一个有意义的名字,不要叫button1等,
修改完名称之后,我们需要看一个事件的东西,点击按钮控件,在属性中找一个闪电的标识符,表示事件(按钮可以通知程序,我这发生了什么事,你这个程序需要进行怎么样的响应),此处就是用户点击按钮之后就会发生click的事件,click事件发生之后需要程序也就是相应的方法进行响应。
双击click事件之后,自动生成一个方法,在其中输入代码,实现如下
csharp
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace WinFormHelloWorld
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void btnSayHello_Click(object sender, EventArgs e)
{
textBoxShowHello.Text = "hello world !";
}
}
}
运行之后:点击按钮就会在 textBoxShowHello中显示如下
2.3 WPF(Windows Presentation Foundation)
窗体部分没有什么不同,特别的是下边多出了一些像HTML的代码,设计师可以参与到界面的开发中,这是与winform中需要拖入控件的区别,采用HTML的代码可以实现设计师美化的界面。
假如设计师想要给界面设计一个渐变色可以按照以下方式
如果是在winform中就变得十分复杂,需要对属性值一点点进行修改,WPF的XAML类似于HTM代码,设计师一般都懂,如果我们觉得设计的效果不错,可以将其保存到资源词典中,别的程序也可以使用,微软平板和手机的开发和WPF很像,知识迁移十分方便。
一旦学习过winform开发后可以发现,后台的开发和WPF是很像的
首先通过属性更改控件名称及控件内默认显示的信息,在ZAML中也会进行实时的更新
点击右侧"事件",双击Click,自动添加事件方法
方法内添加代码
csharp
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
namespace WpfHelloWorld
{
/// <summary>
/// MainWindow.xaml 的交互逻辑
/// </summary>
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
private void ButtonSayHello_Click(object sender, RoutedEventArgs e)
{
textBoxShowHello.Text = "hello world !";
}
}
}
运行结果:
2.4 高版本VS进行C#编程(了解c#还可以做什么)
2.4.1 ASP.NET Web Forms (Old)
ASP.NET Web Forms也就比较老的技术,与winform是一个阶段出现的,目前比较新的技术就是下面要介绍的ASP.NET MVC(Model-View-Controller),这个是一个网络应用程序,相当于做网站。
启动VS Ultimate
在HTML中添加代码
点击运行:网页上输出"hello world !"
将网页进行发布
论坛、网站等就有可能使用的是该技术
2.4.2 ASP.NET MVC(Model-View-Controller)*
此技术是ASP.NET Web Forms的更新技术,MVC实际上是程序开发的一个架构,能够让程序员将不同种类的代码分开放在不同的文件中,使用ASP.NET Web Forms在程序比较大的时候维护就不太方便,MVC技术保证程序在很大的情况下依然结构清晰,维护方便。
运行结果:
同样可以进行publish
2.4.3 Windows Store Application**
Windows Store Application就是给平板电脑写的程序。
双击"MainPage"可以发现界面与wpf是很相近的
同样是在ToolBox中拖入控件,修改属性,切换到模拟器
双击按钮的Click事件来创建事件,添加相应的代码,运行之后结果如下:
2.4.4 Windows Phone Application*
打开后发现与wpf的界面很像,与其不同的地方是,其内部预先写了一些内容,将其删除后,拖入控件,更改属性,创建事件
选择模拟器(屏幕的分辨率会有差异)
如果你有一步windows phone手机之后,注册一个开发者账号,手机连接机器之后就可以将其部署到手机进行调试和使用。以下是 在连接手机的情况下进行部署的方法
2.4.5 Cloud (windows Azure)
微软云计算上的一个hello world 程序的开发,云计算是未来发展的方向。
在云平台上可以建网站,写一些服务性的东西,此处选择架网站
界面基本与ASP.NET MVC(Model-View-Controller)的基本一样,使用一样的方法来创建代码。(操作一样)
运行时需要启动云平台的模拟器,需要Admin的权限,选择以"管理员身份运行"重启VS,重新加载程序,右上角显示是在管理员权限下运行。
运行之后,云平台模拟器进行启动,云平台模拟器中显示出网站内容。
使用云平台创建的网站和ASP.NET MVC(Model-View-Controller)创建的有什么区别呢?
此时如果点击solution进行publish,可以看到界面已经不同,此时选择一个云平台的subscriptions(订阅),就可以将其直接发布到服务上去。
如果发布网站,你就需要买域名,买空间这些,微软云平台就替你将这些都给做了,只需要你订阅发布就可以了。
2.4.6 WF(Workflow Foundation)
也就是工作流,企业中如果在出差时申请出差费用,工作流就是先写申请,经理审批,再到财务,财务发现批准之后就将钱打到我的账户上,微软的工作流技术采用可视化的技术来实现工作流。
出现的编程界面中没有任何东西,先从"ToolBox"中拖入一个"WriteLine",这相当于concole中的Writeline,并在其中写入内容,这样就完成一个工作流。(实现子啊控制台写一个hello world)
2.4.7 WCF(Windows Coinmunication Foundation)*
WCF(Windows Coinmunication Foundation)是纯网络服务,以下写一个读取数据库的service的project。
界面中创建了一个模板,我们需要将其进行修改,实现如果有别的程序,调用我的service就会返回"hello world !"
启动一个"WCF Test Client"工具(没有用户界面,纯数据服务,数据进出看不到,VS提供了这个工具可以看到数据的进出),双击"Say Hello",出现的界面相当于客户端,其中界面中点击"Invoke",就会调用对应的函数,输出"hello world".
WCF作用:假如我写了一个功能强大的计算器,我以web service的方式发不出来,那么大家都可以调用网络上的计算器,将数据给我计算完之后返给他,实现的功能十分强大。
3. 见识C#编写的各类应用程序
- 目的1:让大家拥有辨识各类程序的"火眼金睛"
- 目的2:让大家了解一下完成C#语言学习后的职业发展方向(你最喜欢哪种?)