Visual C# 2008开发技术实例详解
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

第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关键字表示当前的类实例。