Transcript 投影片 1

第3章
 VB 基本語法、變數與運算式
3-1
ASP.NET網頁程式撰寫模型
3-2 VB程式結構及程式註解
3-3
變數與型別
3-4
資料型別之轉換
3-5
運算子與運算式
 本章將介紹ASP.NET網頁程式的撰寫模型
 並針對VB 程式的運算式、運算子、註解、變
數、型別轉換應用進行詳細介紹
 這些技巧都是在撰寫VB程式會用到的基本元素
3-1 ASP.NET網頁程式撰寫模型
撰寫ASP.NET程式有兩種網頁程式碼模型(Page Code
Model)可選擇 。
單一檔案網頁模型(.aspx)
網頁撰寫模型
程式碼後置網頁模型(.aspx
+ .aspx.vb)
ASP.NET網頁程式撰寫模型
3-1-1 單一檔案網頁模型
 所謂的單一檔案網頁模型(Single-File Page Model)就
是將所有的HTML宣告、ASP.NET標記、伺服器控制項、
靜態文字及VB 全部混合寫在一個.aspx檔案之中
 這種方式也稱為「Inline Code」,早期的ASP程式就是
採用這種模型
<%@ Page Language="VB" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server" >
'取得伺服器時間之Function
Function getTime() As DateTime
Return DateTime.Now.ToLongTimeString()
End Function
</script>
<html xmlns="http://www.w3.org/1999/xhtml">
<head id="Head1" runat="server">
<title>Inline Code程式</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<h2>Inline Code程式撰寫模型</h2>
現在伺服器時間是:<%= getTime() %>
</div>
</form>
</body>
</html>
程式一
程式二
程式說明:
1. 程式一是一段內嵌的VB Function程序(C#稱為
Method方法),裡面定義了一個getTime() Function
程序,它會以DateTime.Now回傳伺服器時間。
2. 程式二「<% %>」這表示執行後端伺服器上的運算,
而非前端的HTML運算。
執行ASP.NET程式有三種方式:
1. 在瀏覽器中檢視
在InlineCode.aspx程式按滑鼠右鍵選擇【在瀏覽器中檢
視】,如此便可執行InlineCode.aspx網頁程式(無偵
錯)。
在瀏覽器中
檢視
設定為起始頁
在瀏覽器檢視
2.
以【F5】偵錯模式執行
首先必須將InlineCode.aspx設定為起始頁,再以
【F5】執行程式,這是一種可以進行偵錯的模式。
3.
以【Ctrl】+【F5】無偵錯模式執行
首先也是必須將InlineCode.aspx設定為起始頁,再
以【Ctrl】+【F5】執行程式,這是一種無偵錯的執
行模式。
3-1-2 程式碼後置網頁模型
 程式碼後置網頁模型:口語稱之為Code-Behind)是將
VB程式由從網頁Tag檔中抽離,讓Tag及控制項標籤保留
在.aspx檔案中,而VB 程式邏輯儲存在另一個.aspx.vb檔
案之中,如此是一種最理想的開發與維護模型,同時也利
於偵錯。
Code-Behind的Web Form檔案結構
3-2 VB程式結構及程式註解
SampleFile.aspx.vb程式碼及註解:
說明如下:
 命名空間
.NET程式使用到的類別庫(Class Library)功能都是包含在
命名空間(Namespace)之中 。
 Partial Class部分類別宣告
ASP.NET的Code-Behind程式檔,對於預設的類別名稱皆是
以「Partial Class」來宣告,Partial Class中文稱之為「部分
類別」。
 類別名稱
這是Code-Behind檔中的類別名稱,一般預設是和Web
Form 的名稱一致。
 繼承Page類別
Inherits表示SampleFile類別繼承System.Web.UI.Page類別
的功能。
 Page類別
Page類別含有Web Form所需的基礎功能,故絕大多數情
況下,Code-Behind的Web Form表單類別都會繼承
Page類別,以繼承所需的相關功能。
 Page_Load事件處理常式
這個事件是每個Web Form表單一載入(Load)就會執行
的事件處理常式。
 多行註解
其實VB沒有真正多行註解的功能,如果想進行多行註解,
也是使用單引號對每行進行註解標示。
 單行註解
如果程式註解只有一行,可使用Rem或單引號都可以。
 控制項之事件處理常式
一般若對ASP.NET控制項雙擊(Double Click)之後,就會
產生一段事件處理常式,於其中就可加入欲執行的程式。
 XML文件註解
當程式加入XML文件註解後,編譯器將會搜尋原始程式碼中
的所有 XML 標記,然後建立 XML 文件檔。
 自訂方法程序
VB類別中自訂方法程序 是用Function或Sub,裡面可以 撰
寫自訂程式,它們都屬於VB的程序(Procedure),最
大的差別在於,Function有回傳值,而Sub沒有回傳值。
 程式斷行
VB提供了程式斷行的能力,可將一行程式(單一陳述式)
分為數行,方式是在欲斷行之處,以空隔+底線符號( _)
進行程式的斷行。
3-3 變數與型別
.NET Framework變數可分為兩大類型:實值型別、
參考型別:
1.實值型別(Value Type)
實值型別直接存放真正的資料。所以每個實值型別的資料是
各自獨立的,即使一個實值型別的資料被修改,亦不會影響
其他實值型別的資料。
2.參考型別(Reference Type)
參考型別所儲存的是指向真正資料位址的指標。而一個資料
可能會被多個參考型別變數參考,因此若改變了其中一個變
數,進而最原始的資料亦會改變,將影響所有參考這個位址
的所有變數。
型別分類圖
3-3-1 .NET Framework內建的實值型別
Framework型別與VB 型別之間會形成一個對應關係,
但最終都會轉換成.NET Framework型別。
3-3-2 變數宣告
1.變數宣告
撰寫VB 程式時,對於不同的資料需使用不同資料型態的
變數來表示。
變數的宣告語法如下:
資料型別 變數名稱;
 宣告String字串型別的名字變數:
Dim lastName As String = "聖殿祭司"
 宣告Integer整數型別的年齡變數:
Dim age As Integer = 99
 宣告Boolean布林型別的性別變數:
Dim gender As Boolean = True '男性為True,
女性為False
 宣告Decimal型別的銀行存款金額及利率:
Dim savings As Decimal = 1000000 '存款金額
Dim rate As Decimal = 0.035D '存款利率
2. 宣告多個變數
一行陳述式也可宣告多個變數,方式是在變數間以逗號分隔
3-3-3 變數的預設值與型別指定符號
VB變數宣告後,若沒有初始化指定變數值給它,VB會根據
資料型別的不同,自動指派一個初始值給它:
3-3-4 變數命名規則及保留關鍵字
 變數命名規則
:
 變數名稱命名,建議開頭請以字母來命名。
 接著在第一個字母之後可以使用字母、數字或底線來命名。
 變數不區分大小寫,如MyVal與myVal二者將視為相同的
變數。
 禁止使用VB的保留關鍵字,因為關鍵字是對編譯器有特
殊意義而預先定義的保留事項,否則在程式編譯時將會發
生錯誤。
 變數命名建議:
 避免變數全部使用大寫來命名。
 變數名稱開頭雖然可以用底線來命名,但應避免使用底線
來做開頭命名。
 若變數名稱是由多個單字所組成,命名時請將每個單字開
頭字母以大寫表示,其餘字母以小寫表示,如以「產品訂
單」這個變數而言即「ProductOrders」,Product及
Orders這二個單字開頭字母皆以大寫表示,這樣的命名
法稱為「PascalCasing」命名慣例,而PascalCasing命
名慣例一樣適合用在類別、方法、屬性等命名上。
 VB保留關鍵字(僅列出部分)
3-3-5 常數
VB使用「Const」關鍵字來宣告常數。
3-4 資料型別之轉換
1.
在.NET的C# 或VB語言中,不同的資料型別之
間常需要進行轉換,例如將String字串型別的
12345,轉換為Integer型別的12345,這樣的
過程就稱之為「型別轉換」。
2.
而資料型別的轉換又可分為兩種:隱含轉換、
明確轉換。
3-4-1 隱含轉換(Implicit Conversions)
 隱含轉換(Implicit Conversions) 就是系統會自動對不
同資料型別的資料進行轉換。
 例如:將整數(Integer)轉換成長整數(Long)兩種不
同型別,可以直接將Integer值指定給Long型別變數,而
不必下達任何額外的轉換指令:
Dim height As Integer = 180
Dim h As Long = height
 隱含數值轉換表
隱含轉換的補充說明:
1.從 Integer、UInteger或Long到Single的轉換和從Long到
Double的轉換可能會造成精確度的遺失,但是沒有範圍的
遺失。
2.不存在從任數值型別隱含轉換到Char型別的方式。
3.從浮點型別(Single和Double)到Decimal型別之間沒有
隱含轉換。
4.如果常數運算式的值是在目的型別的範圍之內,Integer型
別的常數運算式可以轉換成SByte、Byte、Short、UShort、
UInteger或ULong。
3-4-2 明確轉換(Explicit Conversions)
相對於隱含轉換,必須明確下指令轉換型別就稱為明確轉換 。
 明確轉換語法:
型別轉換函式(原始數值)
或
型別轉換函式(運算式)
型別轉換指令
說明
CBool(…)
將來源數值或運算式轉換成Boolean型別。
CByte(…)
將來源數值或運算式轉換成Byte型別。
CChar(…)
將來源數值或運算式轉換成Char型別。
CDate(…)
將來源數值或運算式轉換成Date型別。
CDbl(…)
將來源數值或運算式轉換成Double型別。
CDec(…)
將來源數值或運算式轉換成Decimal型別。
CInt(…)
將來源數值或運算式轉換成Integer型別。
CLng(…)
將來源數值或運算式轉換成Long型別。
CObj(…)
將來源數值或運算式轉換成Object型別。
CSByte(…)
將來源數值或運算式轉換成SByte型別。
CShort(…)
將來源數值或運算式轉換成Short型別。
CSng(…)
將來源數值或運算式轉換成Single型別。
CStr(…)
將來源數值或運算式轉換成String型別。
CUInt(…)
將來源數值或運算式轉換成Uinteger型別。
CULng(…)
將來源數值或運算式轉換成Long型別。
CUShort(…)
將來源數值或運算式轉換成UShort型別。
CType(運算式,型別)
將運算式明確轉換為指定資料型別,例如轉換成物件、結構、類別
或介面。
3-4-3 萬用的型別轉換指令~Convert
1.
2.
型別的轉換有隱含及明確兩種方式,但還是有許多時候,
還是會遇見這兩種方式都無法完成型別轉換的工作。
Convert感覺上像是一種萬用型別轉換指令,只要型別
間轉換屬合理的,大多都能夠完成型別轉換的工作。
Convert語法:
Convert.轉換方法(被轉換的數值)
Convert類別支援的型別轉換方法
3-5 運算子與運算式
無論任何類型的程式,都需要進行一些設定或運算,
例如:值的指派設定、加、減、乘、除的計算都屬於「運算
式」。而運算式是由運算元和運算子所組成的,說明如下:
運算元:一般常見的運算元如常值、欄位、區域變數、運
算式。
運算子:一般常見的運算子有+、-、*、/ 和 new等符號或
關鍵字。
以下是一個運算式例子:
x = 2 + ( y * 3)
其中加(+)與乘(*)符號就是運算子,而2、y及3就是
運算元,如此便構成一個運算式。
 VB運算子分類及優先順序
 算術運算子
算術運算子是用來進行執行數學計算,包括了加、減、乘、
除及餘數運算子。
 指派運算子
指派運算子(Assignment)是用來將某個值指派給變數、
常數或屬性,包括了=、^=、*=、/=、\=、+=、-=、
&=運算子。
 比較運算子
比較運算子(Comparison)可用來比較二個值是大於、等
於或小於等關係,包括了>、=、<、<>、>=、<=、
Like及Is運算子。
 串連運算子
串連運算子(Concatenation)是用來結合串連兩個字串,
包括了&及+運算子。
 位元/邏輯運算子
位元/邏輯運算子(Logical/Bitwise)是用來執行邏輯運算,
包括了And、Not、Or、Xor、AndAlso、OrElse、IsFalse、
IsTrue運算子。
本章結束