第一篇:自學(xué).NET之路-C#編程之基礎(chǔ)總結(jié)
.NetFramework簡介
.netframework運行于操作系統(tǒng)之上,提供良好的跨語言特性。
.netframework包含兩個內(nèi)容:公共語言運行時(CLR)和類庫集(FCL)
MSIL微軟中間語言。當編譯.net支持的語言編寫的代碼的時候,輸出的代碼為MSIL
CLR又包含:通用語言規(guī)范(CLS:保證語言互操作性的一組規(guī)則)和公共類型系統(tǒng)(CTS:包含了.net支持的各語言間兼容的數(shù)據(jù)類型和功能)
C#中的變量和常量
C#中的基本數(shù)據(jù)類型:
值類型和引用類型
值類型:簡單類型、結(jié)構(gòu)類型和枚舉類型。
簡單類型:整數(shù)類型、浮點類型、小數(shù)類型(decimal)和布爾類型等
sbyte是有符號的,相當java的byte型,范圍-128~127
C#中byte是無符號的,范圍0~255
變量命名方法:
帕斯卡命名法和駱駝命名法
帕斯卡命名法:如果有多個單詞組成,每個單詞首字母大寫
駱駝命名法:如果有多個單詞組成,第一個單詞全部小寫,后面的單詞大寫
C#中的常量:const與readonly兩種
const聲明的常量:叫靜態(tài)常量,必須聲明時就初始化,且只能用常數(shù)值初始化
readonly聲明的常量:叫動態(tài)常量,可以在聲明時不初始化,只能在構(gòu)造函數(shù)中初始化,但必須每個構(gòu)造函數(shù)中都要初始化;而且可以使用變量值初始化
class Test
{
constfloat PI = 3.1416f;//常量命名:全部大寫
readonly float G;
public Test()
{
G = 9.80F;
}
public Test(float g)//每個構(gòu)造函數(shù)中都要初始化;而且可以使用變量值初始化{
G = g;
}
}
C#中的裝箱和拆箱
裝箱:值類型轉(zhuǎn)換成有引用類型
拆箱:引用類型轉(zhuǎn)換成值類型
值類型:存在棧中
引用類型:在堆中存放對象的地址(即引用),對象本身存放在棧中
拆裝箱允許值類型和引用類型相互處理
C#語法
Switch()括號中可以是int ,char和string ,switch語句中的case語句冒號后什么都不寫,可以不寫break,其他情況一定要寫break,否則報錯
數(shù)組:五種聲明方式
int []array;
array = new int[2];
//第二種聲明方式
int []array1 = new int[2];
//第三種聲明方式
int []array2 = {1,2,3};
//第四種聲明方式
int []array3 = new int[]{1,2,3};
//第五種聲明方式
int []array4 = new int[3]{1,2,3};
//數(shù)組大小也可以是變量
int count = 3;
int []arr = new int[count];
枚舉:用有意義的字符去訪問數(shù)據(jù)
public enum Contry:long//指定枚舉類型,必須是整型,不寫為int型
{
Pacific,//第一個未付值,默認為零
China=1860,Japan,US=1901,Canada
}
C#中的面向?qū)ο?/p>
析構(gòu)函數(shù):函數(shù)名與構(gòu)造函數(shù)名一樣,~函數(shù)名(),不接受參數(shù),由垃圾回收器自動調(diào)用(GC.Collect()調(diào)用垃圾回收器)
virtual關(guān)鍵字:C#中,子類要重寫父類的方法,必須把父類的方法標識為virtual(虛擬的),同時重寫方法用override修飾
new 關(guān)鍵字:new關(guān)鍵字:在子類中定義的一個和父類方法簽名一樣,但是個全新的方法。并非重寫父類的方法。
base關(guān)鍵字:用base關(guān)鍵字調(diào)用父類的方法
訪問修飾符:
public 公有的,internal 在一個項目中的,protected有父子關(guān)系的類,private僅所屬類的成員
注意:如果有一個類既繼承類又實現(xiàn)接口,類名要寫在接口名前面。
屬性,索引器,委托,事件
屬性:訪問修飾一般為public,首字母大寫。屬性內(nèi)有g(shù)et和set訪問器,get內(nèi)必須要有return,set內(nèi)有value關(guān)鍵字,代表從外部接受的值。
索引器:索引器的作用:像處理數(shù)組一樣去處理類的對象。
public class Student
{
private string []obj=new string[10];
//this關(guān)鍵字在這里代表每一個類的對象,[]中整數(shù)是指通過下標訪問
public string this[int index]//此是可以通過索引號去訪問每一個類的成員{
get
{
return obj[index];
}
set
{
if(value!=null)
obj[index]=value;
}
}
static void Main(string []args)
{
Student stucollection=new Student();
stucollection[0]=“柯南”;
stucollection[1]=“小五郎”;
stucollection[5]=“怪盜基德”;
}
}
委托:相當于函數(shù)指針,可使程序在運行是再指定具體要運行的方法。
(1)定義委托:Public delegate int Call()
(2)實例化委托:objcall=new Call(方法名)
(3)調(diào)用委托:objcall();
事件:事件實際上是一種特殊的委托,委托每次只能指向一個方法,而事件可以指向多個方法
(1)定義一個委托public delegate void delegateMe();
(2)定義一個事件 private event delegate eventMe;
(3)訂閱事件eventMe+=new delegateMe(方法名1());
eventMe+=new delegateMe(方法名2());
(4)引發(fā)事件if(condition)theneventMe();
多線程
創(chuàng)建線程實例:
Thread obj=new Thread(new ThreadStart(方法名稱))
開始:Start();
休眠:Sleep();
終止:Abort();
掛起:Suspend();
恢復(fù):Resume();
當前線程:Thread.CurrentThread
ThreadPriority枚舉值用來指定調(diào)度線程的優(yōu)先級(共5級)
lock關(guān)鍵字
C#中通過lock關(guān)鍵字提供同步
線程同步:確保不同的線程對共享資源進行訪問時,每次只有一個線程訪問資源。Lock(this)
{
For(int i=0;i<10;i++)
{
//語句;
}
}
數(shù)組集合對象
Array: Array和數(shù)組很相似,還可以相互轉(zhuǎn)化和拷貝,很多方法都是是通用,可以用Array的靜態(tài)方法對數(shù)組實現(xiàn)反轉(zhuǎn),排序,這是數(shù)組本身無法做到的usingsystem.Array;
Array ar=Array.CreateInstance(typeof(int),5);//創(chuàng)建一個Array的實例
ar.SetValue(12,0);//賦值
Array.Reverse(ar);// 反轉(zhuǎn)
Array.Sort(ar);// 排序
ArrayList:最常用的集合之一.集合的好處是在不知道數(shù)據(jù)大小時,可以實現(xiàn)容量自動增長,而數(shù)組做不到.Add()添加元素
Remove(位置)移除元素
ArrayList al=new ArrayList();
//如果要遍歷集合元素,//方法一:
//將集合中的數(shù)拷貝到數(shù)組中
object []temp=al.ToArray();
foreach(object t in temp)
{
Console.WriteLine(t);
}
//方法二,使用迭代器
IEnumerator ie=al.GetEnumerator();
while(ie.MoveNext())
{
Console.WriteLine(ie.Current);
}
HashTable:以鍵值對的形式保存值
Hashtable hash=new Hashtable(4);
hash.Add(“中國”,1860);
hash.Add(“德國”,1940);
Console.WriteLine(hash[“中國”].ToString());通過key獲得value
SortedList :是 Hashtable 和 Array 的混合能存放鍵值對,類似Hashtable
能通過自身提供的方法通過索引直接遍歷,類似于Array objsortlist.GetKey(i)方法獲得鍵
objsortlist.GetByIndex(i)方法獲得值
青鳥BBSHTML七種加密解密
第二篇:c#基礎(chǔ)總結(jié)
【1】面向?qū)ο蟪绦蛟O(shè)計語言的三大特點是什么?答:【23】Main函數(shù)特點?答:1)Main方法是C#程序的限定,默認的為private【2】三種命名法則的特點?答:匈牙利命名法:在變限定符,返回類型為void或int類型,Main方法必須是靜態(tài)方法;3)一個類或結(jié)構(gòu)只能有一個有效的入駝表示法:一個標示符用若干個有意義的英語單詞或口點函數(shù);4)main方法必須定義在某一個類中。縮寫組成,第一個單詞首字母小寫,后邊的首字母大【24】多態(tài)(重寫、隱藏)
寫;Pascal表示法:與駱駝表示法類似,但是第一個 單詞的首字母也需要大寫?!?】C#注釋的三種形式特點?答1)單行注釋:// 2)class A /// {public virtual void F()【4】引用類型和值類型的數(shù)據(jù)類型? {Console.WriteLine(“A.F”);}} abstract class B:A(1)int valOne = 0;{public abstract override void F();}int valTwo = valOne;答:abstract override 是不可以一起修飾 int valThree = 333;例:在下面的例子里 valTwo = 333;TestValueRefRef1 = new TestValueRef();class A TestValueRefRef2 = Ref1;{public A(){PrintFields();} Ref2.value = 444;public virtual void PrintFields(){} } Console.WriteLine(“values:{0},{1}”, Ref1.value, class B:A Ref2.value);{int x=1;int y;public B(){y=-1;} Console.WriteLine(“values:{0}, {1},{2}”,valOne, public override void valTwo,valThree);PrintFields(){Console.WriteLine(“x={0},y={1}”,答:輸出結(jié)果:values:444,444 x,y);} 當使用new B()創(chuàng)建B的實例時,產(chǎn)生什么輸出?(2)public class EnumTest答:x=1,y=0 { enum Days {Sat=1, Sun, Mon, Tue, Wed, Thu, Fri};分析:執(zhí)行new B()時,由于B繼承自A,所以會調(diào)用static void Main()A的構(gòu)造函數(shù),并執(zhí)行其中的PrintFields()方法,由{int x=(int)Days.Sun;inty=(int)Days.Fri;于該方法為虛方法,在繼承類中被重寫,所以,將執(zhí)Console.WriteLine(“Sun = {0}”, x);行B中的PrintFields()方法。此時,將在DOS界面Console.WriteLine(“Fri = {0}”, y);}} 上輸出“x=1,y=0”,然后,在運行B的構(gòu)造函數(shù)中的答:輸出結(jié)果:Sun = 2Fri = 7 y=-1。(建議同學(xué)們將此程序放入到代碼中,設(shè)置斷點【5】枚舉類型的字段和關(guān)聯(lián)值?枚舉類型有三個要看執(zhí)行過程。)
【25】什么是多態(tài)對象?答:用基類類名聲明,但是特性 修飾符 enum 枚舉名 : 基礎(chǔ)類型 {枚舉成員聲明,枚舉成員聲明,??,枚舉成員聲明}默認的基礎(chǔ)函數(shù)來實例化的對象。這類對象的主要用途是引發(fā)多類型為int;關(guān)聯(lián)值:如果沒有被聲明,默認為0。態(tài),為了將它們和一般的對象(聲明和創(chuàng)建都使用同【6】強制類型轉(zhuǎn)換(例:若有double f=2.7;int 一個類型名的對象)加以區(qū)別、揭示它們的特點和用2)將源類型的對象途,這種形態(tài)的對象稱為多態(tài)對象。轉(zhuǎn)換成為目的類型的對象 【26】接口的特點。答:接口只能包含抽象方法,不【7】運算符&和&&的區(qū)別?答:條件“與”運算符(&&)沒有訪問修飾符,接口成員必須是方法屬性事件或者時才計算第二個操作數(shù)。而&需要計算所有操作數(shù),索引器不能包含常數(shù)字段運算符也不能有靜態(tài)成員。并且優(yōu)先級高于&& 【27】委托和事件,【8】裝箱和拆箱的概念?答:裝箱就是把一個值類型委托的定義修飾符 delegate 返回類型 委托類型名(參數(shù)列表); 【9】for循環(huán)和if語句聯(lián)合使用的程序分析,for(;;)eg: public delegate int DelegateClass(stringinfo);
和continue的區(qū)別?答:break跳出循委托的創(chuàng)建(實例化)委托對象 = new 委托名(關(guān)聯(lián)方法); 【11】命名空間的特點答:它提供一種命名機制,是eg: DelegateClass obj=new DelegateClass(MethodA);
合方式無關(guān),不能表明源文件的存取方式,命名空間DelegateClass obj=MethodA;//隱式創(chuàng)建和初是按層次組織的。始化(不用new)【12】數(shù)組元素的的復(fù)制和讀值 例:分析下列語句: int[3]{5,6,2},new int[5]{6,9,7,8,3},new Hello(string target);} int[2]{3,2}};myArray3[2][2]的值是(D)A)9;B)2;該語句的作用是:在TestCS 命名空間中定義了了一C)6;D)越界 個名為Hello 的委托類型;
【13】類和對象的關(guān)系?答:類是對象的抽象,對象【28】Windows窗體中Button按鈕觸發(fā)的事件是什【14】關(guān)鍵字this和base的區(qū)別?答:base指代基【29】Windows窗體中控件的標識符如何修改?答:【15】關(guān)鍵字new、using的多種用法?答:new修飾【30】如何修改Windows窗體的啟動窗體?答:修改被重寫,但new修飾符可終止這一特性;向下傳播; 實例化一個對象。Using:導(dǎo)入命名空間;自動釋放【31】要使用SQL Server需要使用哪兩個命名空間? Using代碼框里的資源。【16】索引器的特點?答:索引器允許重載;字符串Using System.Date.SqlClient: 【32】什么是DataSet、DataAdapter?兩者聯(lián)系?答:過簽名標識;通過元素訪問來訪問;必須為實例成員;索引器的get訪問器具有與索引器相同的形參表;除DataAdapter:數(shù)據(jù)適配器,數(shù)據(jù)庫與DataSet間的橋value參數(shù)外,索引器的set訪問器還具有與索引器梁,把數(shù)據(jù)庫中數(shù)據(jù)下載到DataSet或回傳回去。相同的形參表?!?3】用戶登錄和密碼修改(帶數(shù)據(jù)庫)【17】靜態(tài)數(shù)據(jù)成員特點?答:為所有類所共享,區(qū)用戶登錄 【18】構(gòu)造函數(shù)的特點?答:(1)構(gòu)造函數(shù)名與類名UserName='“ + txtUsername.Text.Trim().ToLower()+ ”' and UserPwd='“ + txtPassword.Text.Trim()+ 【19】析構(gòu)函數(shù)的特點?答:(1)析構(gòu)函數(shù)名是在類”'“;if(OperateDB.ExecuteReader(sql))型(默認為空)和修飾符;(3)析構(gòu)函數(shù)不能被重載。{username = txtUsername.Text.Trim().ToLower();【20】什么是方法的重載?重載的特點是什么?答: frmMain frm = new frmMain();frm.Show();this.Hide();} 定義一組方法。重載的特點:1)位于同一類中;2)else
方法名相同;3)方法參考列表不同,包括參數(shù)個數(shù)不{MessageBox.Show(”用戶名或密碼錯誤“, ”出錯了“, 同和參數(shù)類型不同;4)與方法返回值和修飾符沒關(guān)系。MessageBoxButtons.OK, MessageBoxIcon.Error);} 【21】虛函數(shù)的特點?答:1)虛方法前不允許有修改密碼: 修飾符;2)虛方法不能是私有的,因此不能使用private修飾符; where UserName='” + frmLogin.username + “' and 【22】抽象類和抽象方法的主要特點?答:抽象類:UserPwd='” + txtOldPwd.Text.Trim()+ “'”;(或者if(OperateDB.ExecuteReader(sqlCheckPwd))說,不能產(chǎn)生對象。但是,它可以有構(gòu)造函數(shù)。(2){string sql = “update UserInfo set UserPwd='” 設(shè)計abstract類的目的是為了被繼承。抽象方法:是+ txtNewPwd.Text.Trim()+ “' where UserName='” + 不完整的,不能執(zhí)行的。frmLogin.username + “'”;
if(OperateDB.ExecuteNonQuery(sql)== 1)
{MessageBox.Show(“密碼修改成功!”);}else
{ MessageBox.Show(“密碼修改失?。 ?;}}
else{MessageBox.Show(“舊密碼不正確!”);}
【34】抽象類定義和繼承使用
特點:1.沒有被完整定義,因而它不能用來實例化,或者說,不能產(chǎn)生對象。(但是,它可以有構(gòu)造函數(shù)。)2.設(shè)計abstract類的目的是為了被繼承。public abstract class Employee{public virtual void Pay(){ }
public abstract void CalculatePay();} public class HourlyEmployee: Employee
{public override void Pay(){CalculatePay();}public override void CalculatePay(){ }} 【35】接口及繼承類的使用
特定功能的抽象成員的集合。一個類可以繼承多個接口,從而獲得多個行為的描述,將它們組合成新的功能并在類中實現(xiàn)。繼承類中必須實現(xiàn)接口中的所有抽象成員。
定義接口的格式:修飾符 interface 接口名:基接口列表 {接口體} 其中,接口體的聲明可以包括:接口方法聲明;接口屬性聲明;接口事件聲明;接口索引器聲明
public delegate void
StringListEvent(IStringList sender);public interface IStringList{ void Add(string s);//方法int Count{get;}//屬性event StringListEvent Changed;//事件string this[int index]{get;set;}//索引器} 【編程題例題】
定義一MobilePhone類,包括屬性成員——網(wǎng)絡(luò)類型(NetworkType),字段成員——屏幕尺寸(screenSize)、手機品牌(brand),手機型號
(brandModel),公共方法成員——Open、Close。其中screenSize為單位是英寸的雙精度數(shù),brand為字符串,NetworkType只能是“GSM”或“CDMA”字符串。要求:(1)在此類中包含構(gòu)造函數(shù),構(gòu)造函數(shù)用于對數(shù)據(jù)(屏幕尺寸、手機品牌和手機型號)進行初始化。(2)公共成員方法中輸出相應(yīng)提示信息(參見(3)中的輸出結(jié)果格式)。(3)寫一測試類,在類中實例化一MobilePhone對象,最后能在DOS界面下顯示如下結(jié)果:諾基亞N81(屏幕尺寸2.0英寸),是一款GSM手機。手機關(guān)機了。using System;
public enum NetworkType {GSM,CDMA,}
public class MobilePhone {public double screenSize;public string brand;
public string brandModel;
public NetworkType networkType;public NetworkType NetworkType{get { return networkType;}}
public MobilePhone(double ss, string bra, string bm, NetworkType nt){screenSize = ss;brand = bra;brandModel = bm;networkType = nt;}public void Open()
{Console.WriteLine(“{0}{1}(屏幕尺寸{2}英寸),是一款{3}手機.”,brand,brandModel,screenSize.ToString(“.0”), networkType);}
public void Close()
{Console.WriteLine(“手機關(guān)機了?!?;} }
public class Test
{public static void Main()
{MobilePhone mp = new MobilePhone(2.0, “諾基亞”, “N81”, NetworkType.GSM);mp.Open();mp.Close();
System.Console.ReadLine();} }
【例】寫一名為Desk的類,包含兩個字段Length(雙精度類型)、Height(雙精度類型)。再寫一繼承類ComputerDesk類。ComputerDesk類除了有Length和Height外,還有KeyboardTray(字符串類型)。Public class desk {double length;double height;}
Public class computerdesk:desk {string keyboardtray}
第三篇:C# .net學(xué)習(xí)進程(個人總結(jié))
第一步 掌握一門.NET面向?qū)ο笳Z言,C#。
絕不提倡在沒系統(tǒng)學(xué)過一門面向?qū)ο螅∣O)語言的前提下去學(xué)ASP.NET。ASP.NET是一個全面向?qū)ο蟮募夹g(shù),不懂OO,那絕對學(xué)不下去!
第二步 對.NET work類庫有一定的了解
可以通過開發(fā)Windows Form應(yīng)用程序來學(xué)習(xí).NET work。ASP.NET是建構(gòu)在.NET work之上的技術(shù),你對.NET work了解得越深,學(xué)習(xí)ASP.NET就越快。
舉個例子:下面簡單列出幾個對掌握ASP.NET非常重要的概念:
對象的內(nèi)存模型,委托,事件,多線程,程序集和應(yīng)用程序域,安全模型
.NET work當然還有許多其它的東西,但不理解與把握清楚上述這些東西,是很難真正把握ASP.NET的。
出于急迫的心情與現(xiàn)實的考慮,不少人沒有扎實的面向?qū)ο蠡A(chǔ)就想直接學(xué)習(xí)ASP.NET,其結(jié)果只能是欲速則不達。
在具備了OO基礎(chǔ)之后,以下是具體的學(xué)習(xí)ASP.NET技術(shù)步驟。
第一步:學(xué)習(xí)HTML與CSS 這并不需要去學(xué)一大堆的諸如Dreamweaver,F(xiàn)irework之類的各種網(wǎng)頁設(shè)計工具,關(guān)鍵是理解HTML網(wǎng)頁嵌套的block結(jié)構(gòu)
與CSS的box模型。許多ASP.NET控件最后都必須轉(zhuǎn)化為HTML。而且,div+CSS是當前主流的網(wǎng)頁布局模型。學(xué)習(xí)這部分時,關(guān)鍵在于理解概念,而不需要將精力花在美化頁面的許多技巧上,那是網(wǎng)站美工的工作,不是程序員的工作。
第二步:學(xué)習(xí)javascript。
javascript不是Java,它主要運行于瀏覽器端。可以完成許多工作,功能也很強大:比如它將客戶端網(wǎng)頁中的HTML元素
看成一棵樹,可以編寫代碼訪問并修改樹節(jié)點,動態(tài)生成新的HTML代碼,從而達到動態(tài)修改網(wǎng)頁顯示特性的目的。
Java在目前的網(wǎng)站開發(fā)中用得很多,非常重要。另外,它也是目前非常流行的AJAX技術(shù)的基礎(chǔ)。
第三步:學(xué)習(xí)計算機網(wǎng)絡(luò)原理
找一本大學(xué)<計算機網(wǎng)絡(luò)>教材,重點看看它的有關(guān)互聯(lián)網(wǎng)的部分,了解一些域名解析和HTTP協(xié)議等知識。這是進行互 聯(lián)網(wǎng)開發(fā)的理論基礎(chǔ)。
第四步:學(xué)習(xí)ASP.NET表示層技術(shù),會設(shè)計Web頁面
需要結(jié)合先前打好的面向?qū)ο蠹夹g(shù)的基礎(chǔ),至少掌握以下內(nèi)容:
(1)各種Web控件的使用方法,(2)理解信息在網(wǎng)頁中的傳送方式,比如,ViewState,Session等的使用。
(3)ASP.NET應(yīng)用程序與網(wǎng)頁的生命周期,以及相關(guān)對象(比如httpcontext,response,request)的用途。
(4)ASP.NET實現(xiàn)事件驅(qū)動的內(nèi)幕
(5)自定義用戶控件
再次強調(diào)一下,沒有OO基礎(chǔ),很難掌握上述技術(shù),就只能被這些東東牽著鼻子走了,會很被動。
第五步 掌握數(shù)據(jù)庫技術(shù)
具體地說,要學(xué)習(xí)以下內(nèi)容:
(1)學(xué)會使用SQL Server 2005:不要求精通它的各種工具與管理配置技術(shù),但至少知道如何連接,如何建表,如何
創(chuàng)建存儲過程
(2)學(xué)習(xí)ADO.NET,掌握使用代碼人工訪問數(shù)據(jù)庫(別用VS2005的向 導(dǎo))的方法
(3)學(xué)習(xí)數(shù)據(jù)綁定控件的使用
第六步 理解多層架構(gòu)
這時,先前在幾個學(xué)習(xí)階段涉及到的程序集與應(yīng)用程序域等就派上用場了,現(xiàn)在,網(wǎng)站架構(gòu)大多采用多層架構(gòu):表示層、業(yè)務(wù)邏輯層、數(shù)據(jù)存取層以及數(shù)據(jù)庫本身??梢韵壬暇W(wǎng)找一此多層架構(gòu)的資料看,再找一個現(xiàn)成的比較復(fù)雜的開源ASP.NET 項目分析一下其架構(gòu)就差不多了。基本上都是一個套路,到處應(yīng)用。有的朋友問:學(xué)習(xí)架構(gòu)是不是必須學(xué)習(xí)設(shè)計模式。我的看法是:不必!當然,你如果學(xué)習(xí)過設(shè)計模式,那當然更好。但在
實際開發(fā)中,如果只想著機械地套用某種模式,反而起不到好的結(jié)果。我的觀點:在學(xué)習(xí)設(shè)計模式時要多思多悟,其思想 就會漸漸地融入你的大腦,在真實的設(shè)計實踐中,忘掉所有的寫在書上的模式,一切從實際出發(fā),相信你的直覺,只要達
到設(shè)計要求的方案就是可行的方案,事實上,你這樣做了之后,回過頭來再看,會發(fā)現(xiàn)你的設(shè)計往往暗合設(shè)計模式的理論。
第七步 學(xué)習(xí)XML與Web Service 先了解XML的基礎(chǔ)知識,找本講XML的書看一下就差不多了,然后,再學(xué)習(xí)Web Service。Web Service其實可類比為遠程
方法調(diào)用(以XML格式表達的調(diào)用信息)。學(xué)到了這里,如果你還有興趣,不妨再去看看SOA,不過SOA的資料都是理論與概
念,看起來比較郁悶,而且離實際開發(fā)可能比較遠。所以,這是可選項。
第八步 學(xué)習(xí)AJAX 學(xué)習(xí)AJAX的主要目的是創(chuàng)建具有更豐富特性的Web表示層,而經(jīng)過前面七步的學(xué)習(xí),到此再學(xué)習(xí)AJAX已水到渠成,所有 的基礎(chǔ)都已具備,不會有太大的問題了。
在基礎(chǔ)未具備的前提下直接學(xué)AJAX,就象“浮沙之上筑高臺”,所以,將AJAX的學(xué)習(xí)次序安排在這里。
第九步 學(xué)習(xí)RIA技術(shù)
RIA:Rich internet application,可看成是將C/S與B/S優(yōu)點合二為一的嘗試。就具體技術(shù)來說,主要指微軟的
Silverlight(WPF_E),畢竟前頭一路行來都是微軟路線。
以上為初學(xué)者接觸.NET技術(shù)的一個比較完整的學(xué)習(xí)步驟,個人能力有限只限于愛好軟件編程和.NET、c#、asp.net,ado.net、asp和數(shù)據(jù)庫的人士參考!
第四篇:net(c#)跨頁面?zhèn)髦捣椒偨Y(jié)
.net(c#)跨頁面?zhèn)髦捣椒偨Y(jié)(2011-04-25 11:03:24)轉(zhuǎn)載標簽: it 方式1:
在接收頁 的html代碼里加上一行: <%@ Reference Page = “WebForm1.aspx” %>
WebForm1 fp=(WebForm1)Context.Handler;this.TextBox1.Text=fp.name;//name 是第一頁的public變量
Context 提供對整個當前上下文(包括請求對象)的訪問。您可以使用此類共享頁之間的信息。
方式2:GET方式 在發(fā)送頁
public int sum=0;
int i =int.Parse(this.TextBox1.Text)*2;
Server.Transfer(“WebForm2.aspx?sum=”+i);
接收頁
this.TextBox1.Text=Request[“sum”].ToString();or this.TextBox1.Text=Request.Params[“sum”].ToString();this.TextBox1.Text=Request.QueryString[“sum”];
方法3:全局變量
發(fā)送頁:
Application[“sum”]=this.TextBox1.Text;Server.Transfer(“WebForm2.aspx”);
接收頁:
this.TextBox1.Text=(string)Application[“sum”];
Application實質(zhì)上是整個虛擬目錄中所有文件的集合,如果想在整個應(yīng)用范圍內(nèi)使用某個變量值,Application對象將是最佳的選擇
方法4:
發(fā)送頁:
1.定義靜態(tài)變量: public static string str=“";2.str=this.TextBox1.Text;Server.Transfer(”webform2.aspx“);接收頁:
1.引入第一頁的命名空間:using WebApplication1;2 this.TextBox1.Text=WebForm1.str;
另外三種最常見的傳值
ASP.NET WEB FORMS 給開發(fā)者提供了極好的事件驅(qū)動開發(fā)模式。然而這種簡單的應(yīng)用程序開發(fā)模式卻給我們帶來了一些小問題,舉個例子,在傳統(tǒng)的ASP應(yīng)用程序中,你能夠通過 POST方法很容易的把一個值或多個值從一個頁面?zhèn)魉偷搅硪粋€頁面(request()/request.form()/request.querystring()),用同樣的方法在ASP.NET中實現(xiàn)有點麻煩。在這里,通過其他方式來解決這種情形。ASP.NET為我們提供了三種方式,一種是可以通過用QueryString來傳送相應(yīng)的值,再一種是通過session變量來傳送相應(yīng)的值,還有就是通過 Server.Transfer方法來實現(xiàn)。
一、使用Querystring
Querystring是一種非常簡單的傳值方式,其缺點就是會把要傳送的值顯示在瀏覽器的地址欄中,并且在此方法中不能夠傳遞對象。如果你想傳遞一個安全性不是那么太重要或者是一個簡單的數(shù)值時,用此方法最好不過了。下面通過一個小例子來完成傳值工作,步驟如下:
1、創(chuàng)建一個web form
2、在新建的web form中放置一個button1,在放置兩個TextBox1,TextBox2
3、為button按鈕創(chuàng)建click事件
代碼如下:
private void button_click(object sender,System.EventArgs e){ string url;url=”webform2.aspx?name=“+TextBox1.Text + ”&Email=“+TextBox2.Text;Response.Redirect(url);}
4、新建一個目標頁面命名為webform2
5、在webform2中放置兩個Label1,Label2 在webform2的Page_Load中添加如下代碼:
private void Page_Load(object sender,System.EventArgs e){ Label1.Text=Request.QueryString[”name“];Label2.Text=Request.QueryString[”Email“];} 運行,即可看到傳遞后的結(jié)果了。
二、使用Session變量
使用Session變量傳值是一種最常見的方式了,此中方式不僅可以把值傳遞到下一個頁面,還可以交叉?zhèn)鬟f到多個頁面,直至把Session變量的值removed后,變量才會消失。舉個例子看看:
1、創(chuàng)建一個web form
2、在新建的web form中放置一個button1,在放置兩個TextBox1,TextBox2
3、為button按鈕創(chuàng)建click事件 代碼如下:
private void button_click(object sender,System.EventArgs e){ Session[”Name“]=TextBox1.Text;Session[”Email“]=TextBox2.Text;Response.Redirect(”webform2.aspx“);}
4、新建一個目標頁面命名為webform2
5、在webform2中放置兩個Label1,Label2 在webform2的Page_Load中添加如下代碼:
private void Page_Load(object sender,System.EventArgs e){ Label1.Text=Session[”Name“].ToString();Label2.Text=Session[”Email“].ToString();Session.Remove(”Name“);Session.Remove(”Email“);} 運行,即可看到傳遞后的結(jié)果了。
三、使用Server.Transfer
雖然這種方法有點復(fù)雜,但也不失為一種在頁面?zhèn)髦档姆绞?。舉個例子看看:
1、創(chuàng)建一個web form
2、在新建的web form中放置一個button1,在放置兩個TextBox1,TextBox2
3、為button按鈕創(chuàng)建click事件 代碼如下:
private void(object sender,System.EventArgs e){ Server.Transfer(”webform2.aspx“);}
4、創(chuàng)建過程來返回TextBox1,TextBox2控件的值代碼如下: public string Name { get {return TextBox1.Text;} } public string Email { get{return TextBox2.Text;} }
5、新建一個目標頁面命名為webform2
6、在webform2中放置兩個Label1,Label2 在webform2的Page_Load中添加如下代碼:
private void Page_load(object sender,System.EventArgs e){ //創(chuàng)建webform的實例 webform1 wf1;//獲得實例化的句柄
wf1=(webform1)Context.Handler;Label1.Text=wf1.Name;Label2.Text=wf1.Email;}
常見的就是這三種方法。
上面方法一中的傳值問題
問:在asp中頁面間傳值使用url?方式 例如 ”index.asp?aaa=華東五市+水鄉(xiāng)六日游“ 因為字符串”華東五市+水鄉(xiāng)六日游“中間有加號,與asp系統(tǒng)字符串連接符關(guān)鍵字沖突,傳過去的變量aaa的值就會變成”華東五市“,請問大家有什么解決辦法? 解決:
1.server.urlencode(”華東五市+水鄉(xiāng)六日游“)
2.URLEncode The URLEncode method applies URL encoding rules, including escape characters, to a specified string.Syntax Server.URLEncode(string)
Parameters string Specifies the string to encode.Example The following script
<%Response.Write(Server.URLEncode(”http://004km.cn“))%>
produces the output
http://004km.cn
3.index.asp?aaa=華東五市+水鄉(xiāng)六日游 4.自己定義一些特殊字符對應(yīng) ”+“,”*“,”#“ 例如,Replace(string,”+“,”CODE01“)
然后到另一個頁面在用Replace(string,”CODE01“,”+“)換回來即可了 自己定義一些特殊字符對應(yīng) ”+“,”*“,”#“ 例如,Replace(string,”+“,”CODE01“)
然后到另一個頁面在用Replace(string,”CODE01“,”+“)換回來即可了
在頁面間傳遞引用
有不少文章討論怎么在兩個頁面間傳遞引用,如果你頁面上的對象設(shè)置為public的話,你就可以傳遞他們在頁面間。
在頁面間傳遞是使用
Server.Transfer替代Response.Redirect就可以。例子:
-------------In Page A codebehind:
public class PageA : System.Web.UI.Page { public System.Web.UI.WebControls.TextBox TextBox1;public System.Web.UI.WebControls.Button Button1;
// standard page code(Page_Load, etc)//....//....private void Button1_Click(object sender, System.EventArgs e){ Server.Transfer(”b.aspx“);} }
-------------In Page B codebehind:
private void Page_Load(object sender, System.EventArgs e){ PageA myAPage = Context.Handler as PageA;string textboxFromPageA = myAPage.TextBox1.Text;}
因為當使用Server.Transfer時所有的對象(A and B)在服務(wù)器上當時都是活動的,你可以引用任何東西。
稍微修改一下b.aspx(uestc95 提供):
Page myPage =(Page)Context.Handler;string textboxFromPageA;textboxFromPageA =((TextBox)myPage.FindControl(”TextBox1“)).Text;
這樣在A.aspx中就可以正常的使用protected類型的了
###
1.使用QueryString變量
QueryString是一種非常簡單的傳值方式,他可以將傳送的值顯示在瀏覽器的地址欄中。如果是傳遞一個或多個安全性要求不高或是結(jié)構(gòu)簡單的數(shù)值時,可以使用這個方法。但是對于傳遞數(shù)組或?qū)ο蟮脑挘筒荒苡眠@個方法了。下面是一個例子: a.aspx的C#代碼
private void Button1_Click(object sender, System.EventArgs e){ string s_url;s_url = ”b.aspx?name=“ + Label1.Text;Response.Redirect(s_url);}
b.aspx中C#代碼
private void Page_Load(object sender, EventArgs e){ Label2.Text = Request.QueryString[”name“];}
2.使用Application 對象變量
Application對象的作用范圍是整個全局,也就是說對所有用戶都有效。其常用的方法用Lock和UnLock。a.aspx的C#代碼
private void Button1_Click(object sender, System.EventArgs e){ Application[”name“] = Label1.Text;Server.Transfer(”b.aspx“);}
b.aspx中C#代碼 private void Page_Load(object sender, EventArgs e){ string name;Application.Lock();name = Application[”name“].ToString();Application.UnLock();}
3.使用Session變量
想必這個肯定是大家使用中最常見的用法了,其操作與Application類似,作用于用戶個人,所以,過量的存儲會導(dǎo)致服務(wù)器內(nèi)存資源的耗盡。a.aspx的C#代碼
private void Button1_Click(object sender, System.EventArgs e){ Session[”name“] = Label.Text;}
b.aspx中C#代碼
private void Page_Load(object sender, EventArgs e){ string name;name = Session[”name“].ToString();}
4.使用Cookie對象變量
這個也是大家常使用的方法,與Session一樣,其是什對每一個用戶而言的,但是有個本質(zhì)的區(qū)別,即Cookie是存放在客戶端的,而session是存放在服務(wù)器端的。而且Cookie的使用要配合ASP.NET內(nèi)置對象Request來使用。
a.aspx的C#代碼
private void Button1_Click(object sender, System.EventArgs e){ HttpCookie cookie_name = new HttpCookie(”name“);cookie_name.Value = Label1.Text;Reponse.AppendCookie(cookie_name);Server.Transfer(”b.aspx“);}
b.aspx中C#代碼
private void Page_Load(object sender, EventArgs e){ string name;name = Request.Cookie[”name“].Value.ToString();}
5.使用Server.Transfer方法
這個才可以說是面象對象開發(fā)所使用的方法,其使用Server.Transfer方法把流程從當前頁面引導(dǎo)到另一個頁面中,新的頁面使用前一個頁面的應(yīng)答流,所以這個方法是完全面象對象的,簡潔有效。a.aspx的C#代碼 public string Name { get{ return Label1.Text;} } private void Button1_Click(object sender, System.EventArgs e){ Server.Transfer(”b.aspx");}
b.aspx中C#代碼
private void Page_Load(object sender, EventArgs e){ a newWeb;//實例a窗體
newWeb =(source)Context.Handler;string name;
第五篇:第二階段WEB開發(fā)基礎(chǔ)學(xué)習(xí)總結(jié)
WEB開發(fā)基礎(chǔ)學(xué)習(xí)總結(jié)
第二階段任務(wù):學(xué)習(xí)掌握HTML、CSS、JavaScript等與web開發(fā)相關(guān)的基礎(chǔ)知識。在第二階段的學(xué)習(xí)中,主要都是針對web開發(fā)基礎(chǔ)的知識,其中html用于來表現(xiàn)網(wǎng)頁的結(jié)構(gòu)與內(nèi)容,css用來控制頁面的外觀和表現(xiàn),javascript用來控制頁面的行為。其中分別針對每一部分分別總結(jié)如下:
HTML的學(xué)習(xí)總結(jié):
(1)、HTML、XHTML的不同:
①XHTML中屬性名稱必須小寫;
②XHTML屬性值必須加引號 ③XHTML屬性不能簡寫;
④XHTML在屬性中增加了ID屬性,它可以取代name的功能; ⑤XHTML DTD 定義了強制使用的 HTML 元素。
總的來說,XHTML比HTML更加嚴格與規(guī)范。它只著重強調(diào)用來表現(xiàn)網(wǎng)站的結(jié)構(gòu)而非樣式,樣式的內(nèi)容交由CSS來控制。
(2)、HTML中注釋的形式是:,注釋部分的內(nèi)容,將不會顯示在網(wǎng)頁中。(3)、HTML中的標簽有兩種形式:
②不帶結(jié)束標記的標簽,如:
,
etc。
在標簽內(nèi)部,可以是允許的屬性=“值”對出現(xiàn)。最重要的幾個標簽如下: