第1章 C#初步
本章的例子演示C#基本语法。所有的编程语言都是从“Hello World”起步的,初学者能够通过一个简单的程序,了解编程语言程序的基本结构,熟悉程序编译运行的环境,同时接触一些基本的输入输出语句,具备感性上的初步认识。在本章中演示了控制台、Web网页、Windows应用程序三种编程环境下的“Hello World”程序。
1.1 创建Hello World 控制台程序
在控制台程序中,Console类的作用是对控制台进行输入和输出的操作。对于初学者而言,控制台程序结构简单,更利于忽略环境因素带来的影响,更专注于问题本身,更适合调试和练习。本示例给出控制台程序实现“Hello World”的方法,通过编写Main入口程序,掌握C#程序的基本结构。
技术要点
本示例主要使用了Console类对控制台执行输入输出操作,技术要点如下。
● Write方法向控制台输出指定的字符串。WriteLine方法在向控制台输出指定字符串后自动换行。
● Read方法从控制台输入字符串。ReadLine方法从控制台输入一行字符串。
● 控制台程序通常使用ReadLine方法暂停显示。
实现步骤
(1)创建控制台应用程序项目,命名为“ConsoleHelloWord”。
(2)打开并编辑Program.cs文件,代码如下所示。
using System;//引用的命名空间 namespace ConsoleHelloWorld//所在的命名空间 { class Program//当前类名称 { static void Main(string[] args)//C#程序运行的接口 { Console.WriteLine("Hello World!");//向控制台输出 Console.ReadLine();//从控制台输入 } } }
(3)按F5键运行程序。程序运行结果如下所示。
Hello World!
源程序解读
(1)程序第1行是引用的命名空间声明,引用的命名空间声明必须出现在程序文件的头部,出现在所有命名空间的定义之前,该语句声明了在程序中将导入哪些命名空间。当声明导入System命名空间后,System.Console类在程序中可以简单地写成Console。
(2)程序第2行声明了当前程序所在的命名空间,通过引用该命名空间的声明,在其他程序中,能够使用该命名空间内的各种元素。
(3)程序第3行声明类的名称,在控制台应用程序中,类名称一般默认为Program。
(4)程序第4行声明了包含在Program类中的Main方法,这是程序执行的入口点,一个程序中只允许声明唯一的Main方法,即使这两个方法分别处于不同的类,或者处于不同的命名空间中,也不允许出现一个以上的Main方法。
(5)程序第5行是Main方法中的程序语句,该语句实现了向屏幕输出一行文字。
(6)程序第6行暂停程序,等待接收用户输入的内容,以便于观察控制台程序的执行结果,当输入回车键时程序运行结束。也可以使用Read方法来达到同样的效果。
1.2 创建Hello World Web应用程序
Response类在Web程序中表示当前Web页面的输出流调用该类内部定义的、操作输出流的方法,实现Web页面的输出控制。本示例创建一个Web应用程序,并在Web页面上显示“Hello World”。
技术要点
本示例主要使用了Response类对Web页面执行输出操作,技术要点如下。
● 在Default.aspx.cs文件中编写程序,实现Web页面设计和处理代码的分离。
● 在Page_Load事件处理方法中编写程序。
● 使用Response类的Write方法向Web页面输出字符串。
实现步骤
(1)创建ASP.NET网站,命名为“WebHelloWorld”。
(2)打开并编辑Default.aspx.cs文件,代码如下所示。
using System; using System.Data; using System.Configuration; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; using System.Web.UI.HtmlControls; //页面继承于System.Web.UI.Page类,其中partial关键字表示当前类可以位于不同的cs文件中 public partial class _Default : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e)//在页面加载事件中编写代码 { Response.Write("Hello World!");//使用Response的Write方法向Web页面输出字符串 } }
(3)按Ctrl+F5组合键运行程序,运行结果如图1.1所示。
图1.1 Web应用程序Hello World的运行结果
源程序解读
(1)Page_Load事件处理方法表示加载Web页面时的要执行的处理程序。
(2)Response类是ASP.NET中Web页面的上下文信息之一,其他的上下文信息包括Request类、Context类、Server类、Application类、Session类和Trace类。
(3)Response类的Write方法用于向HTTP响应输出流写入指定的字符串。
1.3 创建Hello World Windows应用程序
在Windows应用程序的窗口上显示文本,需要在窗口的Paint事件处理方法中编写代码,该事件处理程序在绘制窗体时执行,其中e参数表示绘制窗体时的所需的数据信息,在该参数中包含了当前绘制窗体的图形设备。在该图形设备上使用Graphics类中定义的GDI绘制方法,能够改变窗体的外观。本示例创建一个Windows应用程序,并在Windows窗口中输出“Hello World”。
技术要点
本示例主要使用了Graphics类的DrawString方法,在窗口中输出字符串,技术要点如下。
● 在窗口Paint事件中编写代码,并使用PaintEventArgs类的参数e,在窗口上输出字符串。
● PaintEventArgs类的Graphics属性表示窗口的图形设备,是当前窗口的Graphics类实例,该类的DrawString方法用于在当前图形设备上以指定的参数绘制字符串。
● DrawString方法具有多个重载,本示例使用当前窗口的字体、黑色笔刷,绘制左上角坐标为(0,0)的字符串。
实现步骤
(1)创建Windows应用程序项目,命名为“WindowsHelloWorld”。
(2)将Form1的Font属性指定为“宋体, 24pt, style=Bold”。
(3)打开并编辑Form1.cs文件,代码如下所示。
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; namespace WindowsHelloWorld { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void Form1_Paint(object sender, PaintEventArgs e)//在绘制窗体事件中编写代码 { Graphics formgra = e.Graphics;//使用事件参数e获取当前窗体的图形设备 //在图形设备上使用DrawString方法,在窗体指定位置上绘制字符串 formgra.DrawString("Hello World!", this.Font, Brushes.Black, 0, 0); } } }
(4)按F5键运行程序,运行结果如图1.2所示。
图1.2 Windows应用程序Hello World的运行结果
源程序解读
(1)在Windows应用程序中,主程序的入口点在创建时,已经在Program.cs文件中定义,一般情况下不需要修改。
(2)Form1.cs文件主要用于编写Form1窗口的事件处理方法,在本示例中编写的是窗口的Paint事件处理方法,该方法在窗口绘制时被应用程序调用执行。
(3)窗口Paint事件处理方法具有一个PaintEventArgs类实例的参数,为窗口绘制事件提供数据对象,该示例中包含的Graphics属性是一个Graphics类实例,表示当前窗口的图形设备、调用该实例的DrawString方法,可以在窗口中以指定的参数绘制字符串。
(4)在C#程序中,this关键字表示当前的类实例。