日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

(读书笔记).NET大局观-.NET语言(1)

發布時間:2023/11/27 生活经验 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 (读书笔记).NET大局观-.NET语言(1) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

通用語言運行時

?

通用語言運行時被明確設計為支持多種語言,一般而言,建立于CLR之上的語言可以獲得共同的良好處理。通過一個宏大的核心語義集,CLR還界定了一個以它為基礎的典型編程語言的大體部分。例如對于任何一種基于CLR的語言,單單領會“CLR所定義的標準類型”如何被映射到特定語言宏,就占了很大部分的學習量,當然你還必須學習特定語言的語法和控制結構,然而一旦掌握了CLR所提供的東西,面對任何一種建立于其上的語言,你已經占領的先機。

?

題外話:JAVA在.NET框架中的處境

從一開始,微軟就提供了一個.NET框架版的JAVA編程語言,J#

在兩種情況下J#是恰當的選擇:

第一種情況:需要將現有的JAVA代碼轉移到.NET框架

第二種情況:經驗豐富的JAVA開發人員遷移到.NET框架中,人們常常有一種對自己所熟悉語法的強烈的附屬感覺,因此在一個熟悉的語言中工作會使得過渡更加容易。

?

所有的C#程序由一定數量的類型組成,其最外源必定是類,接口,結構,枚舉或者委托。還有命名空間,所有方法和字段必須隸屬于上述的類型之一,這意味著C#不允許全局變量和全局函數。

?

?

Public double ?good(double ?s)

{

? ReturnSystem.Math.Sqrt(s);

}

good函數帶了一個參數和一個返回值,這些參數都已傳值得方式傳入,這是C#的缺省行為,意味著函數返回時,函數內部對參數值所做的更改,不會被調用端看到,如果參數前面標以關鍵字ref,這就會造成引用方式傳遞參數,如此一來函數內部對參數所做的任何改變,就都會反映給調用端。

?

?

C#不能像C/C++那樣吧參數也設為void,使得,void的唯一用途就是致命某個方法不傳回任何值。

?

?

C#提供的類型

sbyte

有符號8位整數

-128-127

SByte

byte

無符號8位整數

0-255

Byte

short

有符號16位整數

-32768-32767

Int16

ushort

無符號16位整數

0-65535

UInt16

Int

有符號32位整數

-2147489648-2147483647

Int32

uint

無符號32位整數

0-42994967295

UInt32

long

有符號64位整數

-263-263

Int64

ulong

無符號64位整數

0-264

UInt64

float

32位單精度實數

1.5*10-45-3.4*1038

double

64位雙精度實數

5.0*10-324-1.7*10308

demcimal

128位十進制實數

1.0*10-28-7.9*1028

??????

?

?

對于屬性的一種“極端”的觀點,永遠不要使用公開字段,屬性總是一個更好的選擇。

?

?

結構

CTS沒有明確定義一個結構類型,而C#結構是基于類的,并且像類一樣,結構可以實現接口,包含方法,字段,屬性,不過與類不同,結構是值類型而非引用類型,這意味著他們被分配于堆棧之上,此外值類型不能參與繼承,因此C#結構不能參與繼承自其它類型,

?

?

委托和事件

傳遞一個指向方法的引用是件合情合理而且稀松平常的事情,假設你需要通知代碼,請它于特定事件發生時代用你所提供的一個方法,那么你就需要某種辦法將運行期間將回調函數傳入。C++中你可以通過“傳入方法的地址”辦到這一點,然而在.NET框架類型安全的世界里,并不允許地址傳遞,但這并不能說NET之中就沒有這個需求了

這里就用到了委托和事件

CTS定義了引用類型委托,目的正是為此,一個委托就是一個對象,它包含一個引用,后者指向一個“具有特定簽名”的方法,一旦你創建了它并加以初始化。就可以將其作為參數傳入其他方法并調用之。

詳細參見博文:http://blog.csdn.net/yixiantian7/article/details/10586075

NetFramework的編碼規范:

?? 委托類型的名稱都應該以EventHandler結束。

委托的原型定義:有一個void返回值,并接受兩個輸入參數:一個Object 類型,一個 EventArgs類型(或繼承自EventArgs)。

?public delegate void BoiledEventHandler(Object sender,BoiledEventArgse );

?

?? 事件的命名為 委托去掉 EventHandler之后剩余的部分。

public event BoiledEventHandler Boiled; //聲明事件

?

?? 繼承自EventArgs的類型應該以EventArgs結尾。

??// 定義BoiledEventArgs類,傳遞給Observer所感興趣的信息

??????publicclass BoiledEventArgs : EventArgs {

??????????publicreadonly int temperature;

??????????publicBoiledEventArgs(int temperature) {

?????????????this.temperature = temperature;

??????????}

?

?? 這里還有一個約定俗稱的規定,就是訂閱事件的方法的命名,通常為“On事件名”,比如這里的OnBoiled。

?protected virtual voidOnBoiled(BoiledEventArgs e) {

??????????if(Boiled != null)

?{ // 如果有對象注冊

?????????????Boiled(this,e);? // 調用所有注冊對象的方法....在這個地方引發了事件

??????????}

?

事件所使用的委托稱為事件處理器(eventhandler)

它其實就是一個普通的委托,不過,NET框架為這些事件處理定義了兩個約定

1 事件處理器不返回任何值,也就是它的返回值是void

2 事件處理器總是接受兩個參數,第一個參數標識事件的發起者,按照慣例命名為sender

其類型為system.object(在C#中 就是object類型,他是system.object的一個別名)這使得事件接收者反過來于觸發事件對象進行通訊更加方便,第二個參數包含事件發起者調用事件處理器傳入的全部數據,習慣上將其命名為e,其類型是System.EventArgs或是繼承自System.EventArgs的類型

下面就是是個事件處理器的例子

Public delegatevoid MyEventHandler(object sender, MyEventArgs e)

?

?

?

其他一些C#特性:

命名空間

異常處理

參見博文:http://blog.csdn.net/yixiantian7/article/details/10390117

?

?

關于屬性attributes(用實例來講這個更容易理解)

參見博文:http://www.cnblogs.com/luodong/archive/2009/07/14/1523012.html

(一)?在前臺用JS寫的腳本方法,除了可以直接用在前臺控件的屬性中,還可以在后臺運用。即在后臺頁面加載時,調用JS方法。語法格式有兩種,如下:

??????1.第一種寫法:控件ID名.Attributes.Add(“事件名稱”,“JS方法”);

??????如:一個按鈕控件Button1.Attributes.Add(“onclick”,“returnconfirm('確認?')”);

??????2.另一寫法:控件ID名.Attributes["事件名稱"]=“JS方法";

??????如:前臺寫了一個JS方法: function ISCheck(){。。。。。。};

???????????Button1.Attributes[“onclick”]="ISCheck()";

????PS:另外還可以控制某一個文本框的屬性,比如文本框的大小,寬度等。

???????如:TextBox1.Attributes.Add(“width”,“80px”);

(二)前面是第一部分,是學習的別人的.下面提出一點自己的:

????在后臺用this.form名字.attributes["名稱"]=...儲存名字.

?????在前臺調用: var f=document.form名字;??? 變量=f.attributes["名稱"].value;

?

?

?

編寫不安全代碼

在c#使用指針就意味著不依賴垃圾回收機制來幫你管理內存,在這些情況下,C#允許你使用指針,這就是我們常說的”不安全代碼”

在不安全代碼中使用指針,這樣就帶來了指針具有的好處和缺點,為了使這種不全的行為盡可能安全一點,C#要求所有這種代碼必須明白標以關鍵字unsafe,在一個不安全的放阿飛內我們可使用fiexd語句鎖定一個或者多個位于托管堆上的引用類型(有時候這種做法稱為“釘住”(pinning))

?

?

預處理指令

和C/C++不同的是,C#沒有預處理器,編譯器對預處理器的大多數功能都提供了內建支持

?

例如:C#預處理器指令包括#define,這是一個C/C++開發人員習以為常的術語,然而這個術語不能被定義“以一個詞代表一個字符串”,#define只能用于定義記號,記號可以和#If指令一起使用,提供條件編譯的功能

?

?

題外話:

C#是一個比java更好的語言嗎?

這個問題沒有客觀答案,即使真的如此也無足輕重,僅僅因為編程語言而選擇一個開發平臺,就像僅僅喜歡車上的收音機而買下那輛車一樣,你當然可以這么做,但如果你基于通盤考慮而做下決定,你會更開心。

?

轉載于:https://www.cnblogs.com/pangblog/p/3297122.html

總結

以上是生活随笔為你收集整理的(读书笔记).NET大局观-.NET语言(1)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。