锘??xml version="1.0" encoding="utf-8" standalone="yes"?> class Polygon public Polygon()
鏂板緩涓涓猈eb紿椾綋錛屽湪鍏朵腑娣誨姞鐢ㄤ簬鐢ㄦ埛韜喚楠岃瘉鐨凩ogin鎺т歡
2銆佷負ASP.NET緗戠珯閰嶇疆瀹夊叏鐗規?br />浣跨敤“ASP.NET緗戠珯綆$悊宸ュ叿”娣誨姞鍜岀淮鎶ょ敤鎴楓佸畾涔夎鑹插拰鍒涘緩璁塊棶瑙勫垯錛堥夋嫨“緗戠珯”|“ASP.NET閰嶇疆”鏉ュ惎鍔ㄨ宸ュ叿錛?br />娉ㄦ剰錛氬湪緗戠珯璺緞涓笉鑳藉瓨鍦?瀛楃錛屽惁鍒欏湪鍚姩ASP.NET閰嶇疆綆$悊宸ュ叿鏃朵細澶辮觸銆?/u>
3銆佸疄鐜板熀浜庣獥浣撶殑瀹夊叏鎬?br />緙栬緫Web.config鏂囦歡錛屽皢<authentication mode>灞炴ц涓?Forms"錛屾寚瀹氱櫥褰曠獥浣撶殑URL,騫舵寚瀹氭墍闇鐨勪換浣曡韓浠介獙璇佸弬鏁般傚錛?
<authentication mode="Forms">
2
<forms loginUrl="LoginForm.aspx" timeout="5" cookieless="AutoDetect" protection="All"/>
3
</authentication>
4銆佸垱寤轟竴涓猈eb紿椾綋鏉ユ樉紺烘暟鎹簱鏁版嵁
鍚慦eb紿椾綋娣誨姞涓涓暟鎹簮鎺т歡錛屽茍閰嶇疆瀹冩潵榪炴帴鎭板綋鐨勬暟鎹簱錛涘悜Web紿椾綋娣誨姞涓涓狦ridView鎺т歡錛屽皢鍏禗ataSourceId灞炴ц緗負鏁版嵁婧愭帶浠?br />
5銆佽幏鍙栨暟鎹紝騫跺湪Web紿椾綋涓互渚夸簬綆$悊鐨勫艦寮忓垎鎵規樉紺烘暟鎹?br />灝咷ridView鎺т歡鐨凙llowPaging灞炴ц緗負True銆傚皢PagerSize灞炴ц緗負姣忛〉鍏佽鏄劇ず鐨勮鏁般備慨鏀筆agerSettings鍜孭agerStyle灞炴э紝浣垮叾涓嶹eb紿椾綋鐨勬牱寮忓尮閰?br />
6銆佺敤GridView鎺т歡淇敼鏁版嵁搴撲腑鐨勮
紜畾鏁版嵁婧愬厑璁告洿鏂版暟鎹紱鍦?#8220;GridView浠誨姟”鏅鴻兘鏍囪鑿滃崟涓夋嫨“鍚敤鏇存柊”
7銆侀夋嫨GridView鎺т歡涓殑涓琛岋紝浠庝竴涓猈eb紿椾綋瀵艱埅鑷沖彟涓涓猈eb紿椾綋
灝嗘煇鍒楀畾涔夋垚HyperLinkField鎺т歡銆傚湪DataNavigateUrlFormatString灞炴т腑錛屾寚瀹氱洰鏍囩獥浣撶殑URL鍜屽彲閫夌殑鏌ヨ瀛楃涓詫紝騫跺湪DataNavigateUrlFields灞炴т腑鎸囧畾瑕佷綔涓烘煡璇㈠瓧絎︿覆鍙傛暟浼犵粰紿椾綋鐨勪換浣曟暟鎹紱鍦ㄧ洰鏍囩獥浣撲腑錛岄氳繃璁塊棶Web紿椾綋鐨凴equest灞炴х殑QueryString闆嗗悎鏉ヨ幏鍙栦換浣曟煡璇㈠瓧絎︿覆鍙傛暟
8銆佸湪榪愯鏃訛紝灝咷ridView鎺т歡緇戝畾鍒頒竴涓暟鎹簮
灝咷ridView鎺т歡鐨凞ataSource灞炴ц緗負鏁版嵁婧愩傚皢GridView鐨勪換浣旴oundField鍒楃殑DataField灞炴ц緗負鏁版嵁婧愪腑瀹圭撼鐫瑕佹樉紺虹殑鏁版嵁鐨勫睘鎬х殑鍚嶇О錛堜互瀛楃涓茬殑褰㈠紡鎸囧畾錛?br />濡傦細
public partial class OrderHistory : System.Web.UI.Page
2
{
3
protected void Page_Load(object sender, EventArgs e)
4
{
5
string customerID = Request.QueryString["CustomerID"];
6
this.OrderLabel.Text += " " + customerID;
7
this.Title += " " + customerID;
8
9
OrderHistoryDataContext context = new OrderHistoryDataContext();
10
var orderDetails = context.CustOrderHist(customerID);
11
this.OrderGrid.DataSource = orderDetails;
12
13
BoundField productName = this.OrderGrid.Columns[0] as BoundField;
14
productName.DataField = "ProductName";
15
BoundField total = this.OrderGrid.Columns[1] as BoundField;
16
total.DataField = "Total";
17
this.OrderGrid.DataBind();
18
19
}
20
}
]]>
鍒╃敤Server鎺т歡鐨勪簨浠訛紝渚嬪TextBox鎺т歡鐨凾extChanged浜嬩歡
2銆佹墽琛屽鎴風鐨勭敤鎴瘋緭鍏ユ牎楠?br />浣跨敤鏍¢獙鎺т歡銆傚皢ControlToValidate灞炴ц涓鴻鏍¢獙鐨勬帶浠訛紝灝咵rrorMessage灞炴ц涓鴻鏄劇ず鐨勯敊璇秷鎭傞獙璇丒nableClientScript灞炴у凡璁句負True
3銆佽姹傜敤鎴峰繀欏誨湪鏂囨湰妗嗗唴杈撳叆鍊?/strong>
浣跨敤RequiredFieldValidator鎺т歡
4銆佹鏌ュ湪鏂囨湰妗嗕腑杈撳叆鐨勬暟鎹殑綾誨瀷鍜岃寖鍥?/strong>
浣跨敤RangeValidatotr鎺т歡銆傛牴鎹渶瑕佽緗甌ype錛孧aximumValue鍜孧inimumValue灞炴?br />
5銆佹樉紺烘牎楠岄敊璇秷鎭眹鎬?/strong>
浣跨敤ValidationSummary鎺т歡銆傜‘瀹歋howSummary灞炴у凡璁句負True銆傚鏋滃笇鏈涙敮鎸佸姩鎬丠TML鐨勬祻瑙堝櫒鍦ㄦ秷鎭涓樉紺洪敊璇秷鎭紝灝哠howMessageBox璁句負True
]]>
浣跨敤“ASP.NET緗戠珯”妯℃澘鏂板緩涓涓綉绔欍傛寚瀹氭槸鎯充嬌鐢―evelopment Web Server錛堟寚瀹氫竴涓枃浠剁郴緇熶綅緗拰鏂囦歡鍚嶏級錛岃繕鏄兂浣跨敤IIS錛堟寚瀹氫竴涓狧TTP浣嶇疆鍜孶RL錛?br />
2銆佹煡鐪嬪茍緙栬緫Web紿椾綋鐨凥TML瀹氫箟
鍦ㄨ璁¤鍥劇獥鍙d腑鍗曞嚮紿椾綋涓嬫柟鐨?#8220;婧?#8221;鏍囩錛堟垨鑰呮寜Shift+F7錛?br />
3銆佷負Web紿椾綋鍒涘緩鏍峰紡
閫夋嫨“鏍煎紡”|“鏂板緩鏍峰紡”銆備嬌鐢?#8220;鏍峰紡鐢熸垚鍣?#8221;瀵硅瘽妗嗘潵瀹氫箟紿椾綋鐨勬牱寮?br />
4銆佸湪Web紿椾綋涓婃坊鍔燞TML鎺т歡錛堜嬌鐢℉TML鎺т歡錛屽彲浠ユ洿瀹規槗鍦板皢鐜版湁鐨凙SP緗戦〉瀵煎叆ASP.NET錛?/strong>
灞曞紑宸ュ叿綆變腑鐨?#8220;HTML”綾誨瀷銆傚皢鎺т歡鎷栨斁鍒癢eb紿椾綋涓?br />
5銆佷負ASP.NET Server鎺т歡鍒涘緩浜嬩歡澶勭悊紼嬪簭
鍦ㄨ璁¤鍥句腑錛岄夊畾Web紿椾綋涓婄殑鎺т歡銆傚湪“灞炴?#8221;紿楀彛涓紝鍗曞嚮“浜嬩歡”宸ュ叿鏍忔寜閽紙鏈夐棯鐢靛浘褰㈢殑鎸夐挳錛夈傛壘鍒版兂瑕佷嬌鐢ㄧ殑浜嬩歡錛岀劧鍚庤緭鍏ヤ簨浠跺鐞嗘柟娉曠殑鍚嶇О錛屾垨鑰呭弻鍑諱簨浠舵潵浣跨敤榛樿鍚嶇О銆傚湪“浠g爜鍜屾枃鏈紪杈戝櫒”紿楀彛涓紝緙栧啓浠g爜鏉ュ鐞嗕簨浠?br />
6銆佸垱寤轟富棰?br />涓虹綉绔欐坊鍔犱竴涓狝pp_Themes鏂囦歡澶廣備負涓婚鍒涘緩涓涓瓙鏂囦歡澶廣傚湪榪欎釜鏂囦歡澶逛腑錛屽垱寤轟竴涓瑙傛枃浠舵潵瀹氫箟鎺т歡鐨勫睘鎬?br />
7銆佸悜緗戠珯搴旂敤涓涓富棰?br />瑕佷箞浣跨敤姣忎釜欏電殑@Page灞炴ф潵鎸囧畾涓婚錛?br />%@Page Theme="BlueTheme" .....%
瑕佷箞淇敼Web.config鏂囦歡錛屽茍鍦╬ages鍏冪礌涓寚瀹氫富棰橈細
<pages theme="BlueTheme" />
]]>
]]>
]]>
2銆佸皢鎺т歡娣誨姞鍒扮獥浣?br />灝嗘帶浠朵粠“宸ュ叿綆?#8221;鎷栨斁鍒扮獥浣?br />
3銆佹洿鏂扮獥浣撴垨鎺т歡鐨勫睘鎬?br />鍦ㄨ璁¤鍥句腑鍗曞嚮紿椾綋鎴栨帶浠躲傜劧鍚庨夋嫨浠ヤ笅鎿嶄綔涔嬩竴錛?br />A銆佸湪“灞炴?#8221;紿楀彛錛堟寜F4鎵撳紑錛変腑錛岄夋嫨鎯寵鏇存敼鐨勫睘鎬э紝騫惰緭鍏ユ柊鍊?br />B銆佸湪XAML紿楁牸涓紝鍦?lt;Window>鍏冪礌鎴栬呭畾涔変簡鎺т歡鐨勫叾瀹冨厓绱犱腑鎸囧畾灞炴у拰鍊?br />
4銆佹煡鐪嬬獥浣撹儗鍚庣殑浠g爜
閫夋嫨浠ヤ笅鎿嶄綔涔嬩竴錛?br />A銆侀夋嫨“瑙嗗浘”|“浠g爜”
B銆佸湪璁捐瑙嗗浘涓彸鍑伙紝鐒跺悗浠庡脊鍑虹殑蹇嵎鑿滃崟涓夋嫨“鏌ョ湅浠g爜”
C銆佸湪瑙e喅鏂規璧勬簮綆$悊鍣ㄤ腑錛屽睍寮紿椾綋鐨?xaml鏂囦歡錛岀劧鍚庡弻鍑諱笅闈㈢殑.xaml.cs鏂囦歡
5銆佸畾涔変竴緇勪簰鏂ョ殑鍗曢夋寜閽?br />鍦ㄧ獥浣撲笂娣誨姞涓涓潰鏉挎帶浠訛紝渚嬪StackPanel銆傚皢鍗曢夋寜閽坊鍔犲埌闈㈡澘涓傚悓涓涓潰鏉夸腑鐨勬墍鏈夊崟閫夋寜閽兘鏄簰鏂ョ殑銆?br />
6銆佸鐞嗘帶浠舵垨紿椾綋鐨勪簨浠?br />鍦╔AML紿楁牸涓紝娣誨姞浠g爜鏉ユ寚瀹氫簨浠訛紙渚嬪杈撳叆Closing=''錛夛紝鐒跺悗浠庡揩鎹瘋彍鍗曚腑錛岃涔堥夋嫨涓涓幇鏈夌殑浜嬩歡澶勭悊鏂規硶錛堣鏈夋紜殑絳懼悕錛夛紝瑕佷箞閫夋嫨<鏂板緩浜嬩歡澶勭悊紼嬪簭>鍛戒護銆傜劧鍚庯紝鍦ㄤ簨浠舵柟娉曚腑鍐欎唬鐮佹潵澶勭悊浜嬩歡銆?br />
7銆佷負WPF紿椾綋鍒涘緩涓涓彍鍗?br />娣誨姞涓涓狣ockPanel鎺т歡錛屾妸瀹冩斁鍦ㄧ獥浣撻《閮ㄣ傜劧鍚庡湪DockPanel鎺т歡涓坊鍔犱竴涓狹enu鎺т歡銆?br />
8銆佸湪鑿滃崟涓坊鍔犺彍鍗曢」
涓篗enu鎺т歡娣誨姞MenuItem鍏冪礌銆傝緗瓾eader灞炴ф潵鎸囧畾鑿滃崟欏圭殑鏄劇ず鏂囦歡銆備負浜嗘寚瀹氳彍鍗曢」鐨勮闂揩鎹烽敭錛屽彲浠ュ湪瀛楁瘝鍓嶉潰娣誨姞涓涓笅鍒掔嚎瀛楃銆?br />
9銆佸湪鑿滃崟涓垱寤轟竴鏉″垎闅旂嚎
涓鴻彍鍗曟坊鍔犱竴涓猄eperator鍏冪礌銆?br />
10銆佸崟鍑昏彍鍗曢」鍚庢墽琛屼竴涓搷浣?br />閫夋嫨鑿滃崟欏癸紝鐒跺悗涓篊lick浜嬩歡鎸囧畾涓涓簨浠舵柟娉曘傚皢浣犵殑浠g爜娣誨姞鍒頒簨浠舵柟娉曚腑銆?br />
11銆佸垱寤哄揩鎹瘋彍鍗?br />鍦╓indows璧勬簮錛?lt;Window.Sources>...</Window.Sources>錛変腑娣誨姞涓涓狢ontextMenu銆傞噰鍙栧拰鍦ㄦ櫘閫氳彍鍗曚腑娣誨姞鑿滃崟欏逛竴鏍風殑鏂瑰紡錛屽湪蹇嵎鑿滃崟涓坊鍔犺彍鍗曢」銆?br />
12銆佸皢蹇嵎鑿滃崟鍏寵仈鍒扮獥浣撴垨鎺т歡
璁劇疆紿椾綋鎴栨帶浠剁殑ContextMenu灞炴э紝璁╄繖涓睘鎬у紩鐢ㄥ揩鎹瘋彍鍗曘?br />
13銆佸姩鎬佸垱寤哄揩鎹峰紡鑿滃崟
鍒涘緩涓涓狢ontextMenu瀵硅薄銆備嬌鐢ㄥ畾涔変簡姣忎釜鑿滃崟欏圭殑MenuItem瀵硅薄鏉ュ~鍏呰繖涓璞$殑Items闆嗗悎錛堜嬌鐢↖tems.Add鏂規硶錛夈傝緗獥浣撴垨鎺т歡鐨凜ontextMenu灞炴э紝浣夸箣寮曠敤榪欎釜ContextMenu銆?br />
14銆佹彁紺虹敤鎴鋒寚瀹氳淇濆瓨鍒板摢涓枃浠朵腑
浣跨敤SaveFileDialog綾匯備嬌鐢⊿howDialog鏂規硶鏉ユ樉紺哄璇濇銆傚璇濇鍏抽棴鍚庯紝FileName灞炴у氨鍖呭惈浜嗙敤鎴烽夋嫨鐨勬枃浠跺悕銆?br />
15銆佷嬌鐢ㄦ暟鎹粦瀹氭妧鏈紝灝嗙獥浣撴帶浠剁殑灞炴т笌瀵硅薄鐨勫睘鎬х粦瀹?br />鍦ㄦ帶浠跺睘鎬х殑XAML浠g爜涓紝娣誨姞<Binding>鍏冪礌鏉ユ寚瀹氱粦瀹氭簮(涓涓璞?浠ュ強瑕佸拰瀵硅薄涓殑鍝釜灞炴х粦瀹氥傚錛?br /><TextBox ...>
<TextBox.Text>
<Binding Source="{StaticResource customerData}"
Path="ForeName" />
</TextBox.Text>
</TextBox>
16銆佸厑璁鎬竴涓暟鎹粦瀹氬鐢ㄦ埛杈撳叆鐨勬暟鎹繘琛屾牎楠?br />涓?lt;Binding>鍏冪礌娣誨姞<Binding.ValidationRules>瀛愬厓绱犮傚錛?br /><Binding Source="{StaticResource customerData}" Path="ForeName" />
<Binding.ValidationRules>
<ExceptionValidationRules />
</Binding.ValidationRules>
</Binding>
17銆侀噰鐢ㄤ嬌鐢ㄨ涓嶅弽鎰熺殑鏂瑰紡鏄劇ず閿欒淇℃伅
瀹氫箟涓涓牱寮忥紝瀹冭礋璐f嫻嬪鎺т歡鐨刅alidation.HasError灞炴х殑鏇存敼錛屽茍灝嗘帶浠剁殑ToolTip灞炴ц涓哄紓甯告墍榪斿洖鐨勬秷鎭傚皢姝ゆ牱寮忓簲鐢ㄤ簬闇瑕佹牎楠岀殑鎵鏈夋帶浠躲傚錛?br /><Style x:Key="errorStyle" TargetType="Control">
<Style.Triggers>
<Trigger Property="Validation.HasError" Value="True">
<Setter Property="ToolTip" Value="{Binding RelativeSource={x:Static RelativeSource.Self},Path=(Validation.Errors)[0].ErrorContent}" />
</Trigger>
</Style.Triggers>
</Style>
18銆佸湪紼嬪簭鎺у埗涓嬫牎楠屾墍鏈夋帶浠訛紝鑰屼笉鏄湪鐢ㄦ埛浠庝竴涓帶浠跺垏鎹㈠埌鍙︿竴涓帶浠舵椂榪涜鏍¢獙
鍦ㄥ畾涔夌粦瀹氱殑XAML浠g爜涓紝灝哢pdateSourceTrigger灞炴ц涓?Explicit"錛屼粠鑰屽皢鏍¢獙鎺ㄨ繜鍒板簲鐢ㄧ▼搴忔槑紜姹傝繘琛屾牎楠岀殑鏃跺欍備負浜嗘爣鍑嗗寲鎵鏈夋帶浠剁殑鏁版嵁錛岃涓烘瘡涓帶浠剁殑宸茬粦瀹氱殑灞炴у垱寤轟竴涓狟indingExpression瀵硅薄錛屽茍璋冪敤璇ュ璞$殑UpdateSource鏂規硶銆傛鏌ユ瘡涓狟indingExpression瀵硅薄鐨凥asError灞炴с傚鏋滆繖涓睘鎬т負true錛岃〃鏄庢牎楠屽け璐ャ?/div>
]]>
鍏堝啓鍏抽敭瀛梡ublic鍜宻tatic錛屽悗璺熻繑鍥炵被鍨嬶紝鍚庤窡operator鍏抽敭瀛楋紝鍐嶅悗璺熻澹版槑鐨勬搷浣滅絎﹀彿錛屾渶鍚庡湪涓瀵瑰渾鎷彿涓坊鍔犳伆褰撶殑鍙傛暟銆傚錛?br />struct Hour
{
...
public static bool operator==(Second lhs, Second rhs)
{
...
}
...
}
2銆佸0鏄庤漿鎹㈡搷浣滅
鍏堝啓鍏抽敭瀛梡ublic鍜宻tatic錛屽悗璺熷叧閿瓧implicit(闅愬紡杞崲)鎴杄xplicit(鏄劇ず杞崲)錛屽悗璺無perator鍏抽敭瀛楋紝鍚庤窡瑕佽漿鎹㈡垚鐨勭洰鏍囩被鍨嬶紝鐒跺悗鍦ㄤ竴瀵瑰渾鎷彿涓坊鍔犱竴涓弬鏁版潵琛ㄧず杞崲鏃剁殑鏉ユ簮綾誨瀷銆傚錛?br />struct Hour
{
...
public static implicit operator Hour(int arg)
{
...
}
...
}
]]>
鎴栬呬嬌鐢╢rom鍜宻elect 鏌ヨ鎿嶄綔絎︺傚錛?br />var customerFirstNames=from cust in customers select cust.FirstName;
2銆佺瓫閫夋潵鑷彲鏋氫婦闆嗗悎鐨?/strong>
浣跨敤Where鏂規硶錛岀敤lambda琛ㄨ揪寮忔潵鎸囧畾琛岀殑鍖歸厤鏉′歡銆傚錛?br />var usCompanies=addresses.Where(addr=>String.Equals(addr.Country,"United States")).Select(usComp=>usComp.CompanyName);
鎴栬呬嬌鐢╳here鏌ヨ鎿嶄綔絎︺傚錛?br />var usCompanies=from a in addresses where String.Equals(a.Country,"United States")
select a.CompanyName;
3銆佹寜鐗瑰畾欏哄簭鏋氫婦鏁版嵁
浣跨敤OrderBy鏂規硶錛岀敤lambda琛ㄨ揪寮忔潵鏍囪瘑鐢ㄤ簬瀵硅榪涜鎺掑簭鐨勫瓧孌點傚錛?br />var companyNames=addresses.OrderBy(addr=>addr.CompanyName).Select(comp=>comp.CompanyName);
鎴栬呬嬌鐢╫rderby鏌ヨ鎿嶄綔絎︺傚錛?br />var companyNames=from a in addresses orderby a.CompanyName select a.CompanyName;
4銆佹牴鎹竴涓瓧孌電殑鍊煎鏁版嵁榪涜鍒嗙粍
浣跨敤GroupBy鏂規硶錛岀敤lambda琛ㄨ揪寮忔潵鏍囪瘑鐢ㄤ簬瀵硅榪涜鍒嗙粍鐨勫瓧孌點傚錛?br />var companiesGroupedByCountry=addresses.GroupBy(addrs=>addrs.Country);
鎴栬呬嬌鐢╣roup by鏌ヨ鎿嶄綔絎︺傚錛?br />var companiesGroupedByCountry=from a in addresses group a by a.Country;
5銆佽仈鎺ヤ袱涓笉鍚岄泦鍚堜腑鐨勬暟鎹?/strong>
浣跨敤Join鏂規硶鏉ユ寚瀹氳鑱旀帴鐨勯泦鍚堬紝鑱旀帴鏉′歡錛屼互鍙婄粨鏋滃瓧孌點傚錛?br />var citiesAndCustomers=customers.Select(c=>new{c.FirstName,c.LastName,c.CompanyName}).Join(addresses,custs=>custs.CompanyName,addrs=>addrs.CompanyName,(custs,addrs)=>new{custs.FirstName,custs.LastName,addrs.Country});
鎴栬呬嬌鐢╦oin鏌ヨ鎿嶄綔絎︺傚錛?br />var citiesAndCustomers=from a in addresses join c in customers on a.CompanyName equals c.CompanyName select new{c.FirstName,c.LastName,a.Country};
6銆佸己榪珛鍗崇敓鎴怢INQ鏌ヨ緇撴灉
浣跨敤ToList鎴朤oArray鏂規硶鐢熸垚鍖呭惈緇撴灉鐨勫垪琛ㄦ垨鏁扮粍銆傚錛?br />var allEmployees=from e in empTree.ToList<Employee>() select e;
//搴旇灝介噺浣跨敤鍏舵硾鍨嬫柟娉?灝嗘暟鎹紦瀛樹簬鍐呭瓨涓紝鍥犳鏃犳硶鏌ュ埌鏈鏂扮殑鏁版嵁銆?br />
]]>
瀹炵幇IEnumerable鎺ュ彛錛屽茍鎻愪緵涓涓狦etEnumerator鏂規硶鏉ヨ繑鍥炰竴涓狪Enumerator瀵硅薄銆傚錛?br />public class Tree<TItem>:IEnumerable<TItem>
{
...
IEnumerator<TItem> GetEnumerator()
{
...
}
}
2銆佸湪涓嶇敤榪唬鍣ㄧ殑鍓嶆彁涓嬪疄鐜頒竴涓灇涓懼櫒
瀹氫箟涓涓灇涓懼櫒綾伙紝瀹冨簲璇ュ疄鐜癐Enumerator鎺ュ彛錛屽茍鍦ㄦ帴鍙d腑鎻愪緵Current灞炴у拰MoveNext錛堝茍鍙夋嫨鎻愪緵Reset錛夋柟娉曘傚錛?br />public class TreeEnumerator<TItem>:IEnumerator<T>
{
...
TItem Current
{
get
{
...
}
}
bool MoveNext()
{
...
}
}
3銆佺敤榪唬鍣ㄦ潵瀹炵幇涓涓灇涓懼櫒
浣跨敤yield璇彞鏉ュ疄鐜版灇涓懼櫒銆倅ield鎸囧畾浜嗚榪斿洖鐨勬暟鎹」浠ュ強浠ヤ粈涔堥『搴忚繑鍥炪傚錛?br />IEnumerator<TItem> GetEnumerator()
{
for(...)
yield return ...
}
]]>
浣跨敤綾誨瀷鍙傛暟鏉ュ畾涔夌被銆傚錛?br />public class Tree<TItem>
{
...
}
2銆佸疄渚嬪寲娉涘瀷綾葷殑瀵硅薄
鎸囧畾鍏蜂綋鐨勭被鍨嬪弬鏁般傚錛?br />Tree<char> charTree = new Tree<char>('M');
3銆佸娉涘瀷綾葷殑綾誨瀷鍙傛暟榪涜闄愬埗
瀹氫箟綾繪椂錛屼嬌鐢╳here 瀛愬彞鏉ユ寚瀹氱害鏉熴傚錛?br />public class Tree<TItem> where TItem:IComparable<TItem>
{
...
}
4銆佸畾涔夋硾鍨嬫柟娉?/strong>
浣跨敤綾誨瀷鍙傛暟鏉ュ畾涔夋柟娉曘傚錛?br />static void InsertIntoTree<TItem>(Tree<TItem> tree, params TItem[] data)
{
...
}
鍔犵害鏉熷垯涓猴細
static void InsertIntoTree<TItem>(Tree<TItem> tree, params TItem[] data) where TItem : IComparable<TItem>
5銆佽皟鐢ㄦ硾鍨嬫柟娉?/strong>
涓烘瘡涓被鍨嬪弬鏁伴兘鎻愪緵鎭板綋鐨勭被鍨嬨傚錛?br />InsertIntoTree<char>(charTree, 'X', 'A', 'M', 'Z', 'Z', 'N');
]]>
2銆佸垱寤哄鎵樼殑瀹炰緥錛屽茍鐢ㄤ竴涓叿浣撶殑鏂規硶鏉ュ垵濮嬪寲瀹?/strong>
濡傦細
delegate void myDelegate();
private void myMethod(){...}
...
myDelegate del = new myDelegate(this.myMethod);
3銆佽皟鐢ㄥ鎵?br />濡傦細
myDelegate del;
...
del();
4銆佸0鏄庝簨浠?/strong>
鍏堝啓鍏抽敭瀛梕vent錛屽啀鍐欑被鍨嬬殑鍚嶇О錛堢被鍨嬪繀欏繪槸涓涓鎵樼被鍨嬶級錛屽啀鍐欎簨浠剁殑鍚嶇О銆傚錛?br />delegate void myDelegate();
class MyClass
{
public event myDelagate MyEvent;
}
5銆佽闃呬簨浠訛紙鎴愪負浜嬩歡鐨勮闃呰咃級
鐢╪ew鎿嶄綔絎﹀垱寤轟竴涓鎵樺疄渚嬶紙璇ュ鎵樺叿鏈変笌浜嬩歡鐩稿悓鐨勭被鍨嬶級錛岀劧鍚庝嬌鐢?=鎿嶄綔絎︼紝灝嗗鎵樺疄渚嬪悓浜嬩歡鍏寵仈璧鋒潵銆傚
class MyEventHandlingClass
{
...
public void Start()
{
myClass.MyEvent += new myDelegate(this.eventHandlingMethod);
}
private void eventHandlingMethod()
{
...
}
private MyClass myClass = new MyClass();
}
榪樺彲浠ョ洿鎺ユ寚瀹氳闃呮柟娉曪紝璁╃紪璇戝櫒鑷姩鐢熸垚鏂扮殑濮旀墭錛?br />public void Start()
{
myClass.MyEvent += this.eventHandlingMethod;
}
6銆佸彇娑堣闃呬簨浠訛紙涓嶅啀鎴愪負涓涓簨浠剁殑璁㈤槄鑰咃級
鍒涘緩涓涓鎵樺疄渚嬶紙璇ュ鎵樺叿鏈変笌浜嬩歡鐩稿悓鐨勭被鍨嬶級錛岀劧鍚庝嬌鐢?=鎿嶄綔絎︼紝浣垮鎵樺疄渚嬩粠浜嬩歡涓劚紱匯傚錛?br />class MyEventHandlingClass
{
...
public void Stop()
{
myClass.MyEvent -= new myDelegate(this.eventHandlingMethod);
}
private void eventHandlingMethod()
{
...
}
private MyClass myClass = new MyClass();
}
鎴栬咃細
public void Stop()
{
myClass.myEvent -= this.eventHandlingMethod;
}
7銆佸紩鍙戜竴涓簨浠?br />鍍忚皟鐢ㄦ柟娉曢偅鏍?#8220;璋冪敤”浜嬩歡錛堝湪浜嬩歡鍚嶇О鍚庢坊鍔犱竴瀵瑰渾鎷彿錛夈傚鏋滃畾涔変簨浠剁殑濮旀墭瑕佹眰鍙傛暟錛岄偅涔堣繕瑕佹彁渚涘搴旂殑瀹炲弬銆傚紩鍙戜簨浠朵箣鍓嶏紝涓嶈蹇樿媯鏌ヤ簨浠舵槸鍚︿負null銆傚錛?br />class MyClass
{
public event myDelegate MyEvent;
...
private void RaiseEvent()
{
if(this.MyEvent != null)
{
this.MyEvent();
}
}
...
}
]]>
struct RawInt
{
...
public bool this[int index]
{
get{...}
set{...}
}
...
}
2銆佸湪鎺ュ彛涓畾涔夌儲寮曞櫒
浣跨敤get浠ュ強/鎴栬卻et鍏抽敭瀛楁潵瀹氫箟涓涓儲寮曞櫒銆傚
interface IRawInt
{
bool this [int index]{get;set;}
}
3銆佸湪綾繪垨緇撴瀯涓疄鐜頒竴涓帴鍙g儲寮曞櫒
濡?br />struct RawInt:IRawInt
{
...
public bool this[int index]
{
get{...}
set{...}
}
...
}
4銆佸湪綾繪垨緇撴瀯涓紝閲囧彇“鏄懼紡鎺ュ彛瀹炵幇”鏉ュ疄鐜版帴鍙e畾涔夌殑绱㈠紩鍣?br />鍦ㄥ疄鐜版帴鍙g殑綾繪垨緇撴瀯涓紝鏄懼紡鍛藉悕鎺ュ彛錛屼絾涓嶈鎸囧畾绱㈠紩鍣ㄧ殑鍙闂с傚
struct RawInt : IRawInt
{
...
bool IRawInt.this [int index]
{
get{...}
set{...}
}
...
}
]]>
{
...
public int X
{
get {...}
set {...}
}
...
}
2銆佷負緇撴瀯鎴栬呯被澹版槑涓涓彧璇誨睘鎬?br />struct Screen Position
{
...
public int X
{
get {...}
}
...
}
3銆佷負緇撴瀯鎴栬呯被澹版槑涓涓彧鍐欏睘鎬?br />struct Screen Position
{
...
public int X
{
set {...}
}
...
}
4銆佸湪鎺ュ彛涓0鏄庝竴涓睘鎬?br />interface IScreenPosition
{
int X{get;set;}
int Y {get;set;}
}
5銆佸湪緇撴瀯鎴栬呯被涓疄鐜頒竴涓帴鍙e睘鎬?br />struct ScreenPosition:IScreenPosition
{
public int X{...}
public int Y {...}
}
6銆佸垱寤轟竴涓嚜鍔ㄥ睘鎬?br />
{
public int NumSides { get; set; }
public double SideLength { get; set; }
{
this.NumSides = 4;
this.SideLength = 10.0;
}
}
Polygon square = new Polygon();
Polygon triangle = new Polygon { NumSides = 3 };
Polygon pentagon = new Polygon { SideLength = 15.5, NumSides = 5 };
娉細
鍙湁鍦ㄤ竴涓粨鏋勬垨綾誨垵濮嬪寲濂戒箣鍚庯紝鎵嶈兘閫氳繃榪欎釜緇撴瀯鎴栫被鐨勫睘鎬ф潵榪涜璧嬪箋?br />ScreenPosition location;
location.X=40;//緙栬瘧鏃墮敊璇紝location灝氭湭浣跨敤new鏉ュ垵濮嬪寲
涓嶅彲灝嗗睘鎬т綔涓轟竴涓猺ef鎴栬卭ut鍙傛暟鍊間紶緇欎竴涓柟娉曪紱浣嗗彲浠ュ皢涓涓彲鍐欑殑瀛楁浣滀負ref鎴杘ut鍙傛暟鍊兼潵浼犻掋傝繖鏄敱浜庡睘鎬у茍涓嶇湡姝f寚鍚戜竴涓唴瀛樹綅緗紝鐩稿弽錛屽畠鎸囧悜鐨勬槸涓涓闂柟娉曘?/strong>
鍦ㄤ竴涓睘鎬т腑錛屾渶澶氬彧鑳藉寘鍚竴涓猤et accessor鍜屼竴涓猻et accessor銆傚睘鎬т笉鑳藉寘鍚叾瀹冩柟娉曘佸瓧孌墊垨灞炴с?/strong>
get accessor鍜宻et accessor涓嶈兘鑾峰彇浠諱綍鍙傛暟銆傝璧嬬殑鍊間細閫氳繃鍐呭緩鐨勩侀殣钘忕殑value鍙橀噺錛岃嚜鍔ㄤ紶緇檚et accessor銆?/strong>
涓嶈兘澹版槑const灞炴с傚
const int X{get{...}set{...}}//緙栬瘧鏃墮敊璇?/p>
]]>
{
public Test()//鏋勯犲嚱鏁?br /> {
...
}
~Test()//鏋愭瀯鍑芥暟
{
...
}
鏋愭瀯鍑芥暟鍙傜敤浜庡紩鐢ㄧ被鍨嬶紱涓嶈兘緇欐瀽鏋勫嚱鏁板姞璁塊棶鏉冮檺淇グ絎︼紱鏋愭瀯鍑芥暟涓嶈兘甯﹀弬鏁幫紱鍙湁鍨冨溇鍥炴敹鍣ㄦ墠鑳借皟鐢ㄦ瀽鏋勫嚱鏁般?br />
2銆佸紓甯稿畨鍏ㄧ殑disposal鏂規硶
娉細寮鴻皟鐨勬槸鏂規硶鐨勭敤閫旇屼笉鏄悕縐般傛崲璦涔嬶紝涓涓猟isposal鏂規硶鍙互浣跨敤浠諱綍鏈夋晥鐨凜#鏂規硶鍚嶏紝鑰屼笉璇翠笓闂ㄥ瓨鍦ㄤ竴涓悕涓篸isposal鐨勬柟娉曘傛瘮濡俆extReader鐨刢lose鏂規硶
3銆乽sing璇彞
using(TextReader reader = new StreamReader(fileName))
{
...
}
4銆佸己鍒跺瀮鍦懼洖鏀訛紙涓嶆帹鑽愶級
璋冪敤 System.GC.Collect()
]]>
{
string Name();
...
}
2銆佸疄鐜頒竴涓帴鍙?br />class Test:IDemo
{
public string IDemo.Name()//蹇呴』鍐欐帴鍙e墠緙
{
...
}
}
3銆佹娊璞$被錛屽繀欏諱綔涓哄熀綾葷戶鎵垮叾鐨勯潪鎶借薄綾繪墠鑳藉疄渚嬪寲
abstract class Test
{
abstract string Name();
...
}
4銆佸瘑灝佺被錛堜笉鍏佽琚戶鎵匡級
sealed class Test
{
...
}
]]>
]]>
class Derived:Base
{
...
}
2銆佸湪媧劇敓綾葷殑鏋勯犲嚱鏁頒腑璋冪敤鍩虹被鏋勯犲嚱鏁?br />class Derived:Base
{
...
public Derived(int x):base(x)
{
...
}
...
}
3銆佸0鏄庝竴涓獀irtual鏂規硶
class Mammal
{
public virtual void Breathe()
{
...
}
...
}
4銆佸湪媧劇敓綾諱腑瀹炵幇涓涓柟娉曪紝璁╁畠瑕嗙洊涓涓戶鎵跨殑virtual鏂規硶
class Whale : Mammal
{
public override void Breathe()
{
...
}
}
5銆佷負涓涓被鍨嬪畾涔夋墿灞曟柟娉?br />static class Util
{
public static int Negate(this int i)
{
return -i;
}
}
]]>
濡傦細
someType Method(params int[] numbers)
{
...
}
2銆佷負鏂規硶澹版槑涓涓猳bject綾誨瀷鐨刾arams鏁扮粍鍙傛暟錛屽彲浠ユ帴鍙椾換鎰忔暟閲忋佷換鎰忕被鍨嬬殑鍙傛暟
濡傦細
someType Method(params object[] paramList)
{
...
}
]]>
//鏁扮粍
2
//Time[] times = new Time[2] { new Time(21, 7, 10), new Time(9, 10, 11) };
3
//Time[] copyToTimes = new Time[times.Length];
4
//times.CopyTo(copyToTimes, 0);
5
//foreach (Time time in copyToTimes)
6
//{
7
// Console.WriteLine(time.ToString());
8
//}
9
10
//ArrayList鏁扮粍
11
ArrayList times = new ArrayList();
12
times.Add(new Time(21, 7, 10));
13
times.Add(new Time(9, 10, 11));
14
15
Time[] copyToTimes = new Time[times.Count];
16
times.CopyTo(copyToTimes, 0);
17
18
foreach (Time time in copyToTimes)
19
{
20
Console.WriteLine(time.ToString());
21
}
22
23
//闃熷垪
24
//Queue<int> queue = new Queue<int>();
25
//foreach (int i in new int[] { 8, 10, 2, 3, 6, 5 })
26
//{
27
// queue.Enqueue(i);
28
//}
29
//while(queue.Count>0)
30
//{
31
// Console.WriteLine(queue.Dequeue());
32
//}
33
34
//鍫嗘爤
35
//Stack<int> stack = new Stack<int>();
36
//foreach (int i in new int[] { 8, 10, 2, 3, 6, 5 })
37
//{
38
// stack.Push(i);
39
//}
40
//while (stack.Count > 0)
41
//{
42
// Console.WriteLine(stack.Pop());
43
//}
44
45
//Hashtable 涓嶅厑璁告湁閲嶅KEY鐨勫厓绱?br />46
//Hashtable ages = new Hashtable();
47
//ages["don"] = 27;
48
//ages["fly"] = 27;
49
//ages["don"] = 29;//涓嶄細鎶涘紓甯革紝浣嗕細灝嗘key鐨剉alue瑕嗙洊
50
//ages.Add("don", 29);//浼氭姏寮傚父
51
//foreach (DictionaryEntry e in ages)
52
//{
53
// string name = e.Key.ToString();
54
// int age = (int)e.Value;
55
// Console.WriteLine("Name:{0},Age:{1}", name, age);
56
//}
57
58
//SortedList 鍏冪礌宸茶嚜鍔ㄦ帓搴?br />59
//SortedList ages = new SortedList();
60
//ages["sun"] = 28;
61
//ages["fly"] = 27;
62
//ages["don"] = 27;
63
//foreach (DictionaryEntry e in ages)
64
//{
65
// string name = e.Key.ToString();
66
// int age = (int)e.Value;
67
// Console.WriteLine("Name:{0},Age:{1}", name, age);
68
//}
]]>
static void Main(string[] args)
2
{
3
int n=10;
4
add(n);
5
Console.WriteLine(n);//n=10
6
7
}
8
9
private static void add(int num)
10
{
11
num++;
12
}
static void Main(string[] args)
2
{
3
int a = 7;
4
add(ref a);
5
Console.WriteLine(a);//a=8
6
}
7
8
public static void add(ref int num) {
9
num++;
10
}
]]>