本文是備份,原文請看我的網站 --- [C#]把「ASP.NET專題實務」一書的範例,從 VB語法轉成C#

http://www.dotblogs.com.tw/mis2000lab/archive/2008/10/13/csharp_exchange_to_vb.aspx

 

 

這三天的連續假期,我都在做相同的事。

第一,幫忙照顧小孩。

第二,把手邊的範例(VB語法),改成C#。因為 [廣告]本書 "可能" 推出 C#版 (ASP.NET專題實務 / 文魁P8187)

感想就是:還是VB簡單好用!但用了C#之後,許多觀念與作法會更清晰嚴謹。

 

以本書(新書上市-- ASP.NET專題實務(文魁出版) )的第十章範例來比較:

1. 資料庫連結字串,已經寫好(存在)Web.Config檔裡面。

C#語法 -- SqlConnection Conn = new SqlConnection(WebConfigurationManager.ConnectionStrings["testConnectionString"].ConnectionString);

VB語法 -- Dim Conn As SqlConnection = New SqlConnection(WebConfigurationManager.ConnectionStrings("testConnectionString").ConnectionString);

 

2. 擷取 GridView內部的某一列、某一欄位的值

C#語法 -- TextBox my_test_time = (TextBox)GridView1.Rows[e.RowIndex].Cells[4].Controls[0];

VB語法 -- Dim my_test_time As TextBox = GridView1.Rows(e.RowIndex).Cells(4).Controls(0)

              或是用 CType(GridView1.Rows(e.RowIndex).Cells(4).Controls(0), TextBox)來作轉換,強制轉成TextBox型態

 

3. SqlDataSource的 新增/刪除/修改 T-SQL指令與參數

C#語法 -- myAdapter.UpdateCommand.Parameters.Add("@title", SqlDbType.VarChar, 50);
                  myAdapter.UpdateCommand.Parameters["@title"].Value = my_title.Text;

 

VB語法裡面的陣列 or Collection(集合),是用()。而C#使用[ ]

以前用VB語法寫慣的程式,現在改寫成C#,會更瞭解這句程式碼在表達些什麼。

而不是一路傻呼呼地以()用到底......反正VB隨便寫程式都很容易過、很容易就會Run

如果寫C# 卻搞不清楚 [ ] 與 (),那麼就會常常遇見這種怪怪的錯誤訊息:

編譯器錯誤訊息: CS0118: 'XXXXXX 是 'Variable',但卻當成 '方法' 使用

 

4.  此外,C#對於輸出值的要求也比較高,不像VB語法會自動作些轉換,在寫程式時也會更嚴謹地去思維。

例如:VB語法,你抓到一個數字「字串」(如Dim num As String = "123"),拿他來運算,大部分都會正常運作。

但C#語法很嚴謹,一定會出錯。必須強制轉換成 整數才能作運算,要用 Convert.ToInt32(num) 或是 Int.Parse(num)才行!

 

但平心而論,在VS 2008上面開發程式,使用VB語法真得很好用。任何錯誤都會立刻提示。

那怕是打錯字、或是一些小細節,都會主動提醒您。      有時候,我甚至覺得在VS 2005/2008上寫VB語法,是一種享受

但.....使用 C#的話,那麼.....大部分都要等到執行才會知道,一翻兩瞪眼。

自己心臟不強的話,還真的會一肚子氣

舉例來說:File 與 Log #2----[圖片版]訪客計數器(用.txt檔案來記錄)  這個範例,我改成 C#語法,花了兩個小時,氣死我了!!!!

 

5. 把這個範例「DataReader的標準範例 for ASP.NET 2.0 / 3.5」改成 C#版。

SqlConnection Conn = new SqlConnection("資料庫連接字串");
SqlCommand cmd = new SqlCommand("select * from 資料表", Conn);
SqlDataReader dr;

try
{
    Conn.Open(); //這時候才連結DB
    dr = cmd.ExecuteReader(); // 這時候執行SQL指令,取出資料

    //註解:從資料庫裡面,把資料撈出來之後,交給這兩個控制項「呈現」在畫面上~
    dr.Read();
    TextBox1.Text = dr["title"].ToString();
    Label1.Text = dr["summary"].ToString();

    cmd.Cancel();
    dr.Close();

    if (Conn.State == ConnectionState.Open)
    {
        Conn.Close();
        Conn.Dispose(); //一開始宣告有用到 new的,最後必須以 .Dispose()結束
    }
}
catch (Exception ex) // 如果程式有錯誤或是例外狀況,將執行這一段
{
    Response.Write("<b>Error Message---- </b>" + ex.ToString() + "<HR/>");
    throw;
}

 

6. 把VB語法改成 C#語法除了有些習慣要修改之外,有些常用的VB函數也可能消失

請看這篇文章 -- [C#]以前在VB語法裡面用慣的 IsNumeric,在C#不見了??

因為C#是根本沒有任何函數,只能叫用.NET Framewrok裡的類別。

例如:VB語法常用的 Mid() 、Len()....等等。

 

 

總之,這三天讓我浪費很多很多時間,在一些細節上面,例如:VB可以,為何改成C#就不行?

但解決後,也就豁然開朗了。

回頭看看這三天,也學到很多東西。     走過就會留下痕跡,用功總不會白費。

.....................................................................................................................................................................................
ASP.NET專題實務ASP.NET專題實務(文魁出版 / P8187)

2008/八月份 天瓏書局排行榜前十名

.............................................................................................................. 寄信給我    mis2000lab (at) 雅虎.com.台灣 ........

arrow
arrow
    全站熱搜

    MIS2000 Lab 發表在 痞客邦 留言(0) 人氣()