學習ASP.NET需求的基本的c#知識
作者:Eve Cole
更新時間:2009-12-05 14:52:37
-
微軟的實例教材中講了三種語言:c#、vb 、Jscript,為了讓大家過一把新東西隱,我們還是學c#吧。這個最好有一點c++基礎。
不過沒有也沒關係,大不了多費點力了。
任何一門語言都有兩個部分:
數據+語法+演算法
數據是用來表示資訊的,語法是來控制的。演算法說穿了就是人們總結的一些解決問題的思考方式。到於資料吧,多了自然有資料結構了,然後就出來了什麼查詢、插入、修改什麼的。
1.儲存資料當然要用到變數了,現在就來講一下c#的申明方法!
通常方法是:
類型+變數名
int x //定義一個整形變數
string name,pwd; //定義兩個字符性變數
object x; //定義一下對象
object obj=new object();//基於某一個物件建立一個實例
public string x;//給字元變數加上一個類型修飾符,讓所有使用者都能存取
說明一下:
在申明變數時,對型別字象int string object 都要用小寫,因為c#是嚴格區分大小寫的.用INT x;定義變數就錯了。
我們還是來兩個程式看看:
/* 學習變項的申明方法
create by vagrant */
using System;
class Test
{ static void Main()
{ int x=3;
Console.WriteLine("x={0}",x);
string name="vagrant";
string pwd="197926";
Console.WriteLine("your name is :{0};pwd is {1}",name,pwd);
object y;
y=x;//明確轉換
Console.WriteLine("y={0}",y);
}
}
2.向瀏覽器發送字元:
上面講到的是在C#中用System.Console.WriteLine輸出變數的值,但在ASP.NET還是要用到Response物件的Response.Write("char")方法,不過此時不可省掉括號.
例:
<%@ language="C#" %>
<% string name;
name="vagrant";
Response.Write("you name is "+name);
%>
3.存取索引屬性的值(以表單中元素為例)
學過asp的朋友都知道用Requst.Form("物件名稱")提取表單物件的值.但是在asp.net應用Request.QueryString["name"]提取.
4.申明索引屬性
在asp.net中我們要學會事件程式設計概念與索引指示器。透過索引指示器我們可以像數組那樣存取類別的資料資訊的方法。還是我們先來構造一個簡單的例子:
using System;
class Team
{
string[] s_name=new string[3]{"vagrant","jack","rose"};//定義類別的一個域,然後寫一個構造子函數,使得外類能透過索引訪問
public string this[int nIndex]//存取索引申明
{
get {
return s_name[nIndex];//提供外類讀的權力
}
set {
s_name[nIndex]=value;//提供外類寫的權力
}
}
}
class Test
{
public static void Main(){
Team t1=new Team();//建立一個Team類別的實例
for(int i=0;i<3;i++)
Console.WriteLine(t1[i]);//透過索引指示器存取實例的資料資訊
}
}
5.定義並初始化數據
當我們在處理批次資料常用到數組,定義數組要考慮三個問題:類型,資料名,維數
我還是以一維資料來說吧,畢竟常用的就是一維資料。
定義數組:
string studentname[]=new string[50];
初始化:
方法一.
studentname[0]="vagrant";
studentname[1]="jack";
........
方法二.
int[] sex=new int[2]{0,1};//0代表男,1代表女
這很好理解我就不解釋了。
6.結構與枚舉
我之所以把結構與枚舉放在一起來講是因為這兩者有相似之處又有不同之處。
結構:一系列相關的資訊組成單一實體。象通訊錄通常包括:姓名、電話、地址等。
枚舉:邏輯上密不可分的一系列資料。比方星期有一到七。但星期一到星期日邏輯密不可分。
這兩者是有不同的,結構是資料集合,而枚舉每次只能取其中一個。結構與枚舉都是資料結構類型中的一種。
定義結構資料型態:
struct PhoneBook {
public string name;
public string phone;
public string address;
}
定義一個該結構類型的變數
PhoneBook p1;
給結構變數各成員賦值
p1.name="vagrant";
p1.phone="88888888";
p1.address="wuhan";
定義枚舉資料類型,並賦值
//定義一個枚舉型別
public enum MessageSize {
Small = 0,
Medium = 1,
Large = 2
}
// 建立一個枚舉類型變數
public MessageSize msgsize;
// 給該變數賦值
msgsize = Small;
7.聲明並使用方法
// 定義一個沒有回傳值的函數
void voidfunction() {
…
}
// 宣告一個有回傳值的子函數
String stringfunction() {
…
return (String) val;//(string)表示回傳類型
}
//申明一個能計算出來的函數
String parmfunction(String a, String b) {
…
return (String) (a + b);
}
// 使用函數
voidfunction();
String s1 = stringfunction();
String s2 = parmfunction("Hello", "World!");
8.流程控制語句
在c#中流程控制語句與C++沒有太大差別。只不過C#中加了一個foreach(vb程式設計師應該不會陌生).
流程控制大不了有選擇、循環。
if條件語句的用法:
if(Requery.QueryString["name"]==null){
statement....
}
當有太多選擇時,常用switch語句
例 :
switch (Name) {
case "John" :
…
break;
case "Paul" :
…
break;
case "Ringo" :
…
break;
default:
…
break;
}
循環語句通常有兩種:
a.for循環
for (int i=0; i<3; i++){
statement...
}
b.while循環
int i = 0;
while (i<3) {
Console.WriteLine(i.ToString());//i.ToString()目的是i轉換為字串型
i += 1;
}
9.異常處理
在編寫程式時,我們常會出現一些事先不可預期的事情。比方用戶的錯誤輸入、記憶體不夠、網路資源無法使用、資料庫無法使用等情況。所以我們應該用異常處理方法來處理這類問題。 C#裡面所有的異常都為類別的一個實例,這個類別繼承於System.Exception類別
先來介紹一下拋出異常語句thow
throw expression
這個語句是在計算表達式的值時產生的異常
異常處理語句:
try是用來捕捉區塊執行過程中發生的異常
cathc是用來處理該異常的。
通用方法:
try {
//可能拋出異常的程式碼
} catch(OverflowException e) {
// 捕捉一個詳細的異常
} catch(Exception e) {
// 捕捉一個通常的異常
} finally {
// 執行一個沒有異常的程式碼
}
看一個貝貝寫的處理資料庫聯接出錯的異常:
try
{
OleDbConnection conn = getConn(); //getConn():得到連線對象
OleDbDataAdapter adapter = new OleDbDataAdapter();
string sqlstr="select id,title,author,pic,hits,posttime from notes order by posttime desc";
mydataset= new System.Data.DataSet();
adapter.SelectCommand = new OleDbCommand(sqlstr, conn);
adapter.Fill(mydataset,"notes");
conn.Close();
}
catch(Exception e)
{
throw(new Exception("資料庫出錯:" + e.Message))
}
10.字串處理
在c#中string為引用型,所以可以用聯接,截斷
看了下面這個實例就知道了!
// 使用字串
String s1;
String s2 = "hello";
s2 += " world";
s1 = s2 + " !!!";
// 使用StringBuilder類別的Append方法
StringBuilder s3 = new StringBuilder();
s3.Append("hello");
s3.Append(" world");
s3.Append(" !!!");
11.事件處理
事件是類別向外界發送通知的成員。
先還是看一個事件處理代表例子:
void MyButton_Click(Object sender,
EventArgs E) {
…
}
這我也不大懂,聽說看了MFC會比較清楚,如果哪位有這方面的經驗,還望多多指教。
12。聲明一個事件
// 建立一個public事件
public event EventHandler MyEvent;
// 為該事件定義一個方法
protected void OnMyEvent(EventArgs e) {
MyEvent(this, e);
}
13.給事業加OR去處理該事件的方法
Control.Change += new EventHandler(this.ChangeEventHandler);
Control.Change -= new EventHandler(this.ChangeEventHandler);
14.類型轉換
int i = 3;//定義一個整形變數並賦值
String s = i.ToString();//整形轉換為字串型,用ToString()
double d = Double.Parse(s);//字串型轉換為雙精度型用Double.Parse(var);
還有一些,我就不解釋了,等我們有了一定的基礎再深究吧。反正了解了這一些對後面常用的問題處理還是沒有問題