官术网_书友最值得收藏!

第一篇 C#2008入門必備

1章 認識C#

本章首先介紹C#語言相關的基本知識,以使讀者對C#有一個整體的認識。

C#是目前世界上最好的編程語言之一,其集中了幾乎所有關于軟件開發和軟件工程研究領域的最新成果。C#擁有完全面向對象、類型安全、組件技術、版本控制、自動內存管理、跨平臺異常處理,以及代碼安全管理等先進特性。這些特性使它成為眾多程序員和企業的首選開發語言。

本章將先介紹.NET運行框架及其與C#的關系,然后介紹C#開發平臺Visual Studio 2008,最后通過實例說明該平臺的基本使用方法。

本章主要內容:

● C#簡介

● .NET框架及其與C#的關系

● C#開發工具Visual Studio 2008的使用

● C#基本程序編寫方法介紹

1.1 什么是C#

C#是微軟公司開發的一種面向對象編程語言,它是微軟公司專門為.NET運行框架開發的高度集成和高度兼容的面向對象編程語言。C#強大的功能得益于強大的.NET運行框架。

1.1.1 Microsoft .NET框架

.NET框架(又可寫作.NET Framework)是微軟的XML Web服務平臺,它不是一種語言。該服務平臺致力于允許應用程序通過Internet實現數據通信和數據共享,而不必考慮操作系統、設備或編程語言的類型差異;它提供了用于創建各種應用程序的組件。利用.NET框架可用創建幾乎所有的應用程序,包括Windows應用程序、Web應用程序和Web服務等。

目前支持.NET框架的語言除了C#之外,還有C++、Visual Basic、和JScript等。它們對應的.NET版本是Visual C++.NET、Visual Basic.NET和JScript.NET等。使用這些語言編寫的程序都叫做.NET程序,這些程序調用.NET框架基礎類庫,運行于.NET框架中的公共語言運行庫(Common Language Runtime)之上,正是公共語言運行庫和.NET框架基礎類庫構成了.NET框架的基本內核。.NET框架原理圖如圖1-1所示。

公共語言運行庫提供.NET程序的運行支持,它提供了所有.NET程序的運行環境,負責內存管理、安全性管理、簡化應用程序部署。同時正是這個原因,使得公共語言運行庫環境能夠提供跨語言調試和調用。這種利用公共語言運行庫運行的程序叫做托管程序,相應的不在公共語言運行庫環境中運行的程序叫做非托管程序。利用C#語言編寫的程序都是托管程序,可以用于編寫非托管程序的有C、C++等。

圖1-1 .NET框架原理圖

.NET框架基礎類庫提供了編寫.NET應用程序所需要的所有類、接口和類型,如數據庫訪問、網絡通信、圖形處理、密碼術等。程序員用.NET語言調用的系統類、接口等就是.NET框架基礎類庫對應的類和接口。.NET框架基礎類庫運行于公共語言運行庫之上。

1.1.2 .NET框架的開發語言——C#

C#是專門為適應.NET框架而設計的,它支持.NET框架基礎類庫提供的每種功能。C#是一種完全面向對象的編程語言。在C#中使用的所有基本類型都看做是對象,在程序中即使一個整型變量,也是當做對象來進行處理的。這與在C和C++中的情況是完全不同的。但是C#是從C和C++語言繼承和發展而來,借鑒了包括Java、Delphi、Visual Basic等多種語言優點,如基本的流程控制語句、窗體設計思想、跨平臺設計等。利用C#語言幾乎可以完成C和C++語言能實現的所有功能,并且增強了程序的安全性。在C#中對指針的管理非常嚴格,只有在特別標識的代碼塊中才可以定義和使用指針,這樣降低了內存溢出的風險,同時又兼顧了使用指針編寫強大且高效、靈活的代碼。

最后,C#的開發平臺Visual Studio 2008為程序員提供了良好的程序編寫、代碼管理、調試和部署環境,大大提高了程序的開發效率。

1.1.3 C#的開發平臺Visual Studio 2008

Visual Studio 2008(簡稱VS2008)是微軟公司專門為開發.NET應用程序而設計的集成開發環境(IDE),它是目前最好的C#開發環境。

VS2008為程序員提供了高級代碼編輯器、方便的窗體設計器、集成調試器和許多其他工具,為快速開發C#應用程序奠定了基礎。

如果讀者使用過Visual Studio 6.0或Delphi等開發工具,會發現VS2008的許多使用方法與它們相當類似。VS2008提供了強大的工具和開發組件,可以用來設計應用了多種資源的復雜的Windows窗體應用程序、Web應用程序及Web服務。那些在記事本中需要輸入幾十行代碼才能完成的功能,在VS2008中只需要通過簡單的拖放或雙擊鼠標便可完成。在對控件實施拖放操作時,VS2008將會自動顯示所有的標記、屬性和代碼以實現所需功能。并且在更改控件、對象或變量名稱后,VS2008會立即自動更新所有的關聯名稱,以達到與原名同步。VS2008同時為代碼的輸入提供了智能感應功能。一般情況下,只要輸入代碼的前一、兩個字符,VS2008就會提示完整語法;如果輸入錯誤,VS2008會立即提示錯誤代碼,以便程序員及時糾錯。并且這種智能感應的響應時間提高了至多10倍該平臺還具有程序調試功能,包括代碼調試、跟蹤及即時窗口等。

1.2 第一個C#程序

本節將通過三個應用程序的實現介紹Visual Studio 2008開發環境及其使用。這些程序包括Windows Console應用程序、Windows Form應用程序和ASP.NET Web應用程序。本節將使讀者對Visual Studio 2008開發環境有一個初步的了解。

1.2.1 認識和配置Visual Studio 2008開發環境

安裝好VS2008之后,單擊“開始”—“程序”—“所有程序”—“Microsoft Visual Studio 2008”菜單命令,便可以將其打開。

第一次打開時,VS2008要求進行默認環境設置,如圖1-2所示。選中“Visual C# 開發設置”項,會自動將IDE布局成方便C#開發的環境和界面。也可以隨時選擇不同的開發設置。方法是單擊“工具”—“導入和導出設置”菜單,然后選擇“重置所有設置”選項。單擊“下一步”按鈕,根據提示便可完成設置。

圖1-2 默認環境設置對話框

選擇“Visual C#開發設置”選項,單擊“啟動Visual Studio”按鈕,彈出如圖1-3所示開發環境,起始頁左上角是“最近的項目”,如果之前開發過一些項目,則該窗口中將會列出部分項目。窗體的右邊是“解決方案資源管理器”和“屬性”窗口。其中“解決方案資源管理器”中放置了當前打開項目的所有文件;“屬性”窗口,用于顯示項目中選定控件的屬性。當前沒有打開項目,所有兩個窗口內容都是空白。下面將通過實例介紹利用VS2008創建項目。

圖1-3 Microsoft Visual Studio 2008界面

說明:本書所有項目均通過VS2008創建。

1.2.2 第一個Windows Console程序

本書開始介紹的應用程序很多都是Windows Console程序,它們對學習C#編程非常重要。本節除介紹如何創建程序外,還會介紹程序創建時的一些環境。

1.2.3 創建Windows Console程序

按照下面的步驟可以很輕松地創建Windows Console程序。

(1)打開VS2008,單擊“文件”—“新建”—“項目”命令,彈出“新建項目”對話框,如圖1-4所示。

圖1-4 新建項目對話框

(2)在“項目類型”欄里展開“Visual C#根目錄”,并選定“Windows”;此時右邊“模板”列表框中將顯示“Visual Studio已安裝模板列表”;選擇其中的“控制臺應用程序”,并在下邊的“名稱”輸入框中為應用程序項目取名,如ConsoleTest(其默認名為Console Application1);然后在“位置”輸入框中輸入項目要存放的路徑,本章的程序存放于D:\C#\ch1中,讀者可以在隨書附盤中的文件夾ch1中找到該程序。

(3)保持其他值為默認值單擊“確定”按鈕,進入工程的初始化階段。

(4)完成初始化后,在程序主窗口中添加如下代碼。

    using System;
    using System.Collections.Generic;
    using System.Text;
    namespace ConsoleTest
    {
        class Program
        {
          static void Main(string[] args)
          {
              Console.WriteLine("This is my first C# Program"); //向控制臺輸出字符串
              Console.WriteLine("I like C#");          //向控制臺輸出字符串
              Console.ReadKey();                       //獲取用戶的輸入
          }
        }
    }

(5)單擊“調試”—“啟動程序”菜單命令。

(6)程序進入調試編譯狀態,通過調試后便可以得到如圖1-5所示的執行結果。

圖1-5 程序執行結果

說明:控制臺輸出默認為白色,背景顏色默認為黑色。如果讀者不習慣這種背景,可以用鼠標右鍵單擊控制臺的標題欄,在菜單中選擇“屬性”命令,彈出“屬性”對話框,在該對話框中可以設置字體(包括顏色)、背景(包括顏色)和布局等屬性。

(7)最后關閉窗口,退出當前程序。

這里主要說明平臺的使用方法。首先,建立項目的方法不止如上所述的一種,上面是通過單擊“文件”—“新建”—“項目”命令完成的;也可以在“起始頁”的左上角“最近的項目”欄里的“創建”欄單擊“項目”,如圖1-6所示,系統同樣會彈出“新建項目”對話框。當然,對于打開已有項目來說,如果“最近的項目”列表中沒有要打開的項目,則可以在下面的“打開”一行中單擊“項目”打開。最后,如果讀者習慣使用快捷鍵,則可以按下Ctrl+Shift+N組合鍵,可以實現同樣功能。

圖1-6 創建項目

創建完程序之后,系統經過初始化,自動生成應用程序代碼基本框架,包括基本的命名空間、類和函數名稱(這些內容的解釋將在第二篇講到),如Main函數。程序員只需在相應類和函數里邊添加功能代碼。

添加完代碼之后就要進行調試了。同樣調試方式也不止上面介紹的一種,還可以通過單擊工具欄上的啟動調試按鈕實現相同功能。一般它就在“調試”菜單的下方,是一個倒三角形圖標。同時也可以使用快捷鍵Ctrl+F5來實現調試。當然,VS2008也有逐語句、逐過程、和斷點設置、異常處理等調試功能。這些功能將在后面章節中詳細介紹。

最后對代碼做一點說明。程序中的主函數static void Main(string[] args)是程序的入口,其前兩行代碼用于在控制臺顯示字符;接下來一行Console.ReadKey()的作用是在控制臺窗口中顯示用戶的鍵盤輸入。之所以用在該程序中,是因為程序處于調試模式下運行時,它的控制臺窗口會在顯示完畢程序內容后,立即關閉。加上Console.ReadKey()后控制臺窗口就會等待用戶輸入,而不會立即關閉。當然,為避免立即關閉控制臺窗口,更簡單的方法就是單擊“調試”菜單中的“開始執行(不調試)”項。

下面將對VS2008中的“解決方案資源管理器”和“屬性”窗口作簡要介紹。

“解決方案資源管理器”窗口位于開發主窗口的右上角,如圖1-7所示。

圖1-7 “解決方案資源管理器”窗口

該窗口對整個解決方案中的項目進行管理,也就是說所建工程的所有項目文件都會包含在該窗口中。在該窗口中可以對其文件進行管理,如添加Windows窗體、添加組件、添加類、刪除文件等。展開“Properties”,可以看到一個“AssemblyInfo.cs”文件,該文件中存放了程序集的常規信息,可以不予考慮。“引用”項中包含了當前工程中使用的所有.NET庫,關于引用的使用將在后面介紹。最后一個文件“Program.cs”是編寫代碼的主文件,雙擊該文件可以看到前面編寫的代碼。

1.2.4 解決方案資源管理器

說明:使用C#編寫的代碼文件擴展名為.cs,是CSharp的英文縮寫,也即是C#。

1.2.5 屬性窗口

實際操作中,細心的讀者可能會發現,當選中“解決方案資源管理器”中的子項(如Program.cs)時,窗口下方的“屬性”窗口會有相應的文件屬性列表,如圖1-8所示。

圖1-8 “屬性”窗口

該窗口顯示了選定對象的基本屬性,包括“復制到輸出目錄”、“生成操作”、“完整路徑”、“文件名”等。其中“復制到輸出目錄”表示是否將源文件復制到當前項目的bin\Debug目錄下。它有三個選項,包括“不復制”、“始終復制”和“如果較新則復制”。“生成操作”將在后面章節中詳細講到。

接下來介紹本節的最后一個基本管理窗口——“類視圖”窗口。如果沒有顯示該窗口,可以單擊“視圖”—“類視圖”命令,彈出“類視圖”窗口如圖1-9所示。

圖1-9 “類視圖”窗口

類視圖窗口通過類的組織關系來對其進行管理。它管理著整個項目所定義的所有方法、類、類成員及其層次關系。雙擊這些元素同樣可以定位到其定義所在文件。

1.2.6 第一個Windows Form程序

Windows Form應用程序涉及很多知識點,如控件、事件、屬性等。這里通過一個簡單的問候對話程序,著重介紹建立Windows Form應用程序所用到的基本方法,其中包括創建時的幾個小技巧。具體知識點將在后面章節深入講解。

1.2.7 創建Windows Form程序

建立Windows Form應用程序步驟如下所示。

(1)打開VS2008,單擊“文件”—“新建項目”命令,打開“新建項目”對話框,選擇“模板”列表框中的“Windows窗體應用程序”選項,并將其名稱改為FormsTest,如圖1-10所示。

圖1-10 “新建項目”對話框

(2)單擊“確定”按鈕,可以在設計窗口中得到如圖1-11所示設計界面,這就是設計窗體。

圖1-11 設計窗體

(3)找到“工具箱”欄,如果沒有可單擊“視圖”命令,選擇“工具箱”選項將其調出,如圖1-12所示。

圖1-12 工具箱

(4)在工具箱中找到Button控件,將其拖放到設計窗體中。向設計窗體中拖放兩個Button控件,可以看到兩個控件名分別為button1和button2。控件布局效果如圖1-13所示。

圖1-13 控件布局

(5)雙擊button1按鈕和button2按鈕,在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 FormsTest
        {
            public partial class Form1 : Form
            {
              public Form1()
              {
                  InitializeComponent();                           //初始化控件
              }
              private void button1_Click(object sender, EventArgs e)  // button1的
              // 單擊事件
              {
                  MessageBox.Show("你單擊了左邊的button1按鈕。");    //彈出消息框
              }
              private void button2_Click(object sender, EventArgs e)  // button2的
              // 單擊事件
              {
                  MessageBox.Show("你單擊了右邊的button2按鈕。");    //彈出消息框
              }
            }
        }

(6)運行應用程序,在窗體中單擊button1按鈕,得到如圖1-14所示結果。當然,如果單擊button2按鈕,彈出對話框中的提示便是“你單擊了右邊的button2按鈕。”,讀者可以自行測試。

圖1-14 程序運行效果圖

上面便是建立Windows Form應用程序的基本步驟。雖然建立步驟比較多,但是它完成了相對于使用其他開發環境來說比較麻煩的功能。這一點也體現了VS2008的快速應用程序開發能力。

1.2.8 Windows Form程序創建技巧

下面將通過程序中用到的Button控件來介紹VS2008的一些使用技巧。

右鍵單擊應用程序中的button1按鈕。單擊其中“察看代碼”項可以直接進入控件的事件代碼處;“置于頂層”和“置于底層”表示該控件與設計窗體Form1中其他控件的疊加關系;“鎖定”控件用于將控件固定在設計窗體Form1上,不再移動;“選擇Form1”表示將設計窗體Form1選定(以便窗口屬性等); “剪切”、“復制”等命令功能與通常意義是一樣的。下面重點介紹最后一項——“屬性”。

單擊“屬性”命令,彈出“屬性”窗口,如圖1-15所示。

圖1-15 “屬性”對話框

“屬性”對話框中列出了該控件的所有屬性及其屬性值(具體屬性將在后面章節介紹),程序員可以在其中設置、更改屬性值。不但如此,“屬性”對話框中還包括了該控件的所有事件列表(如果該控件有事件),如單擊事件、雙擊事件等。

最后簡單介紹一下“錯誤列表”窗口和“輸出”窗口,這兩個窗口的信息對編程非常重要。

默認情況下,“錯誤列表”窗口和“輸出”窗口都在整個開發環境的最下面。如果不能看到它們,可以在“視圖”菜單中找到并調出它們。“錯誤列表”窗口實時顯示程序員在編寫代碼過程中出現的語法錯誤,包括錯誤個數、警告個數、錯誤行、錯誤列等。“輸出”窗口則有兩個輸出選項,它們是“調試”和“生成”選項,可以顯示生成結果或調試結果信息。如圖1-16所示為沒有語法錯誤狀態下,兩個窗口輸出結果。

圖1-16 沒有語法錯誤的輸出結果

去掉了程序中的一個分號,則兩個窗口的輸出結果如圖1-17所示。

圖1-17 有語法錯誤的輸出結果

可以看到,這兩個窗口可以及時檢查出代碼編寫過程中的各種錯誤,同時錯誤代碼下面會出現一個紅色的波浪線。這樣便大大提高了程序的開發效率。

前面兩節介紹的都是Windows應用程序的實例,接下來介紹一個關于ASP.NET的程序實例。

1.2.9 第一個ASP.NET程序

利用ASP.NET編寫的程序通常由一個個的頁面組成,即所謂的網頁。ASP.NET應用程序不同于Windows應用程序。前面介紹的程序實例都是基于Windows的,而ASP.NET應用程序則是基于Web。它的運行離不開Web服務器的支持,通俗地講這里的Web服務器就是Internet信息服務器(IIS)。如果計算機上沒有安裝IIS,也不必擔心;因為在VS2008中,可以使用其內置的ASP.NET Development Server(ASP.NET開發服務器)作為Web服務器。

1.2.10 創建ASP.NET程序

為了方便介紹VS2008開發ASP.NET應用程序的基本流程,下面將以一個ASP.NET應用程序實例說明。具體步驟如下所示。

(1)打開VS2008,單擊“文件”—“新建”—“網站”命令,彈出“新建網站”對話框,如圖1-18所示。

圖1-18 “新建網站”對話框

(2)選中“模板”列表框中的ASP.NET網站,創建一個具有.NET模板的空網站。如果沒有安裝IIS,應確保“位置”組合框中前一個下拉列表框顯示為“文件系統”。在后一個列表框中輸入完整存放路徑及名稱。其默認名為“WebSite1”,可以將其改為“FirstASPNET”。最后選擇語言為“Visual C#”。

(3)完成設置之后單擊“確定”按鈕。系統開始初始化網站,最后得到如圖1-19所示的界面。

圖1-19 ASP.NET應用程序設計窗口

(4)在“解決方案資源管理器”中可以看到,系統自動建立了一個Default.aspx頁面;并且給出了頁面的HTML代碼,如“源”視圖中所示代碼。對應下面的“源”視圖按鈕,其左邊“拆分”按鈕,用于拆分顯示代碼與實際顯示效果。單擊其最左邊的“設計”視圖按鈕,即切換到所見即所得設計頁面。在“工具箱”中依次拖放一個TextBox控件、一個Button按鈕控件、一個Label按鈕,放入“設計”頁面中。在Button按鈕的“屬性”窗口中,設置其Text屬性為“確定”。在Label標簽的“屬性”窗口中,設置其Text屬性為空。最終效果如圖1-20所示。

圖1-20 控件的屬性設置效果

(5)雙擊“確定”按鈕,進入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;
        public partial class _Default : System.Web.UI.Page
        {
            protected void Page_Load(object sender, EventArgs e)   //當頁面加載時發生
            {
            }
            protected void Button1_Click(object sender, EventArgs e)   //Button1
            // 單擊事件
            {
              string s = "你輸入了:";
              //將Label1的Text屬性設置為給定的字符串
              this.Label1.Text = s+this.TextBox1.Text;
            }
        }

(6)單擊“調試”—“開始執行(不調試)”命令,編譯通過之后系統會打開IE瀏覽器。在輸入框中輸入一串字符串,如“你好,我的朋友!”,并單擊“確定”按鈕,運行效果如圖1-21所示。

圖1-21 ASP.NET應用程序運行結果

1.2.11 Web程序和Windows程序的區別

從ASP.NET應用程序的建立過程來看,其步驟和建立Windows應用程序非常相似。不同之處主要有如下幾點。

(1)需要對站點“位置”設置站點使用服務器模式,如圖1-22所示。分為“文件系統”、“HTTP”和“FTP”。在下拉列表中選擇“文件系統”選項,則系統會建立一個臨時的Web服務器。該服務器安全性較高,外部不能訪問;如果要選擇“HTTP”項,則要求計算機架設了Web服務器;“FTP”選項表示將文件存放到遠程的目錄,該模式適用于對已經存在的遠程Web站點做修改。

圖1-22 位置選項

(2)網站設計前和設計后的“設計”視圖發生變化的同時,其“源”視圖也發生了相應的變化。下面是設計完成后,“源”視圖中Default.aspx的代碼。

        //Page指令,配置頁面屬性
        <%@ Page Language="C#" AutoEventWireup="true"  CodeFile="Default.aspx.cs"
    Inherits="_Default" %>
        <! DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.
    org/TR/xhtml1/DTD/ xhtml1-transitional.dtd">
        <html xmlns="http://www.w3.org/1999/xhtml" >   //HTML開始標記
        <head runat="server">                           //頭的開始標記,定義頭
            <title>無標題頁</title>                       //<title></title>之間設置網頁
            //標題名
        </head>                                         //頭的結束標記
        <body>                                          //正文部分開始標記
            <form id="form1" runat="server">            //<設置標單屬性>
        <div>                                           //定義區隔標記,容納控件
            //設置服務器端控件
              <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
              <asp:Button   ID="Button1"   runat="server"   OnClick="Button1_Click"
    Text="確定" />
              <asp:Label ID="Label1" runat="server"></asp:Label>
        </div>                                          //區隔標記結束
            </form>                                      //標單結束標記
        </body>                                         //正文結束標記
        </html>                                         //HTML結束標記

說明:ASP.NET采用了頁面分離技術,真正實現了用戶界面和邏輯界面的分離。上述文件Default.aspx便是用戶界面設計結果。“<%”和“%>”之間是Page指令,定義了頁面的編程語言和使用到的類等信息。接下來的代碼主要定義了使用到的控件、控件位置、屬性和事件等。如果不熟悉HTML語言,請參看第20章的相關介紹。

到此為止,已經介紹了三個具有代表性的應用程序。這些程序是本書內容的縮影,其中的很多具體的技術將在后面的章節逐步展開。

1.3 一個優秀的開發助手——MSDN

MSDN是MicroSoft Developer Network的縮寫形式,是Microsoft提供的有關編程的最全面的信息資源。MSDN包含了上千兆字節信息,包括產品幫助說明、文檔示例代碼、技術文章等,可供全世界的開發人員使用。建議C#程序開發人員,在安裝VS2008時,順便將其安裝。這樣在開發過程中才可以使用VS2008的幫助,如“目錄”、“搜索”、“索引”、“動態幫助”等功能。而且通過MSDN Library還可以實現聯機幫助。MSDN的運行效果如圖1-23所示。

圖1-23 MSDN幫助界面

1.4 小結

本章首先介紹了.NET框架的體系結構,以及其與C#語言的關系;然后對C#語言的特點作了詳細介紹,闡述了C#與其他語言的區別與聯系;同時介紹了C#的開發工具VS2008的功能和使用。

最后,介紹了利用C#語言在VS2008上開發應用程序的基本方法,以及其涉及的操作技巧。這些程序包括Windows控制臺應用程序、Windows窗體應用程序和ASP.NET應用程序。

下一章將介紹C#的語法基礎,重點介紹其基本和常用的語法,這些對后面知識的學習和理解很重要。如果讀者已經有足夠的C#語法知識,可以跳過這一章。

主站蜘蛛池模板: 金门县| 枝江市| 清水县| 且末县| 滨州市| 威宁| 温州市| 阳西县| 旬邑县| 旅游| 乌拉特前旗| 蒙自县| 花莲县| 唐山市| 瑞安市| 岚皋县| 靖远县| 永胜县| 万安县| 北安市| 依安县| 客服| 荥经县| 乌拉特后旗| 河西区| 盐边县| 富锦市| 和田县| 芜湖市| 广西| 民乐县| 高清| 扬州市| 荔波县| 绥化市| 巫山县| 高尔夫| 普兰店市| 新邵县| 论坛| 武川县|