c#基礎淺學

C# 程序設計css

第一章 初識 .NET Framework 和 C#數據庫

.NET Framework 是支持生成和運行下一代應用程序和 Web 服務的內部Windows組件編程

.NET Framework 的關鍵組件爲公共語言運行時(CLR) .NET Framework 類庫(.dll)數組

.NET Framework 提供了託管執行環境簡化的開發部署以及與各類編程語言的集成(跨語言的平臺)安全

.NET Framework 具備兩個主要組件:公共漢語言運行時(CLR) .NET Framework 類庫(FCL)服務器

CLR 稱爲公共語言運行時(是管理代碼執行並提供簡化開發過程的服務的運行環境)(提供了內存管理,線程執行,代碼執行,代碼安全驗證,編譯以及其它系統服務網絡

IL 中間語言數據結構

.exe多線程

JLT 即時編譯器 (編譯成2進制的機器語言)異步

CLR 是由 CTS(通用類型系統) 和 CLS(公共語言規範) 組成

System.Collections.Generic; 泛型

System.Linq;數據庫

System.Text; Builder

靜態方法能夠直接運行

App.config 應用程序配置文件

命名空間(邏輯組織)(避免命名衝突)

第二章 C# 基礎語法

標識符:是程序中類型和變量的名稱,標識代碼元素名稱,由Unicode字符組成(使用未格式化的Unicode字符,以一個合法的Unicode字符或下劃線開始,用關鍵字做標識符,必須以@符號開始(數字不是合法的Unicode字符))

abstract  as  base  bool  break  byte  case  catch  char  checked chass  const (常量) continue  decimal  default  delegate  do  double  else  enum  event  explicit  extern  false  finally  fixed  float  for  foreach  goto  if  implicit  in  in(泛型修飾符)  int  interface  internal(程序集內部)  is(類型判斷)  lock(多線程時候用)  long  namespace  new(隱藏父類的同名方法)  null  object  operator  out(類型輸出參數)  out(泛型修飾符)  override(重寫)  params(可變參數數組,必須放在參數列表的最後一個)  private  protected(保護的,只有子類能夠訪問)  public  readonly  ref(引用參數)  return  sbyte  sealed(密封類,不能被繼承,修飾方法,子類不能被修改)  short  sizeof  stackal  static  string  struct(結構)  switch  this  throw(拋出異常)  true  try  typeof  uint  ulong  unchecked  unsafe  ushort  using  virtual(虛擬的,定義虛方法,能夠override)  void  volatile  while

除了參數,私有字段及局部變量使用Camel風格外,其餘均使用Pascal風格

Pascal:類,方法名,屬性名,類內的共有字段,接口,自定義的數據類型(枚舉,結構)

變量:程序運行期間變化的程序元素(變化的元素的容器)

匿名局部變量也是強類型的局部變量(只能在方法內部用)初始化的時候必須是強類型,不能是無類型的

object string(類) 引用類型,其它爲值類型

byte 0 – 255

sbyte -128 – 127

decimal (精度高) double(範圍大)

\b退格 \r換行 \n回車

TryParse(「」, out )轉換失敗返回結果爲0

Convert.ToSingle()轉換爲浮點型

C#運算符

優先級順序

一元運算符(正,負,取反,按位求補,加加,減減,點)

二元運算符(算術,移位,關係,賦值,邏輯、條件)(is:類型判斷 前者是否是不後邊的類型的,繼承的也算 是返回true,不然false;as:轉換失敗返回空值)

三元運算符

里氏替換原則

用as 轉換記得判斷轉換結果是否是null 不是再去執行後續代碼

短路與 && 從前日後依次判斷 有false就不執行後面的判斷了

短路或 || 有true 後面就再也不判斷

字符串的不變性

string.Equals(str1, str2); === str1.Equals(str2); === str1 == str2;

str.Split();分隔

DateTime 是結構 是值類型

Array

全部數組都隱式繼承自 System.Array 類

Array.Sort();排序

Array.Reverse();反轉

數組是引用類型,對數組的修改能夠保留下來(值類型操做的是副本)

第三章 面向對象的程序設計及類的概念

對象是人們要進行研究的任何事物,是對問題領域中事物的抽象(萬物皆對象,每一個對象都是惟一的,對象具備屬性和行爲,對象具備狀態(屬性對應的值),對象都屬於某個類,每一個對象都是某個類的實例(指的對象))(能加上量詞的都是對象

:是一種具備相同屬性和行爲的對象的抽象,描述一組類似對象的共性(類是模型,是模板,是圖紙)

類和對象之間的關係:1. 咱們會從同一種對象身上提取共同擁有的特徵、屬性和共同能執行的操做、行爲轉化爲類中的數據成員(屬性、字段),和方法(行爲、操做)。

2. 用類進行實例化,爲該實例指定不一樣的屬性,則建立出不一樣的對象。

3. 類是模板,是圖紙,通常不幹活,真正幹活的是實例,是對象。

4. 使用對象,調用對象的方法,就能夠幹活了

類和類之間構成了對象模型

對象模型中的類是一種自定義的數據類型

面向對象編程(Object Oriented Programming):定義各個類及它們之間的關係(三大基本特徵:封裝,繼承,多態

public 公共變量,沒法防止任意賦值,數據不安全(解決方法:把變量定義爲私有的,而後公開公共的屬性來進行訪問,能夠提升數據的安全性)

privarte 私有字段 加 public 公共屬性是對私有字段的封裝(屬性是關於字段的一對訪問方法,一個getter方法,用於獲取字段的值,一個setter方法,用於設置字段的值)

繼承能夠減小冗餘代碼

面向對象編程相對傳統語言來講解決傳統語言的數據類型只能定義屬性,沒法描述行爲的問題

[]表示可選的 <>表示必填的

類成員包括:字段、常量、屬性、方法、索引器、構造函數、析構函數、內部類

用new 調用構造函數建立對象

計算機中的內存分爲兩大塊

棧內存:速度快,內存小(存對象的引用,指向堆內存的起始地址)

堆內存:速度慢,內存大(存真正的對象(對象的實際數據))

(你必須知道的.net)

const 常量(常量在編譯的時候初始化)(只能在定義的時候初始化

readonly 在運行時初始化(只能定義在方法外部)沒法對只讀的字段進行賦值,

readonly字段只能在定義的時候(編譯的時候)或在構造函數上(運行的時候)初始化

靜態方法只能引用靜態字段和字段方法

get set 都出現 讀寫; 只有get 只讀; 只有set 只寫;

屬性本質上是一對方法

方法是類或對象的行爲,是對象間傳遞消息的機制

方法擁有簽名,方法的訪問級別、可選修飾符、返回值、名稱、任何方法參數(簽名是方法區別於其餘的類成員)

public(任意項目中均可以訪問) private(只能在當前類內訪問) protected(只能在繼承的子類中訪問(出如今父類)) internal(只能在當前程序集內訪問)

protected internal(能夠在當前程序集內訪問,也能夠在跨程序集的子類中訪問)

類若是沒有訪問修飾符,默認是internal; 類內的成員若是沒有訪問修飾符,默認是private

在命名空間中定義的元素沒法顯式地聲名 private、protected、protected internal

 

OO:面向對象

OOP:面向對象編程

OOA:面向對象分析

OOD:面向對象設計

OOAD:面向對象的系統分析與設計

封裝(索引器(訪問數組成員))

static 不用建立對象能夠直接訪問 用static修飾的變量或者屬性 經過類名來訪問 屬於類 對全部對象來講 保留同一個父本(版本)

sealed 密封的 用sealed修飾的方法 變量 類 不能被繼承(拒絕被繼承)(用 sealed修飾一個類 這個類不能再有子類 用sealed修飾的方法 不能被子類重寫)

構造函數不能寫返回值類型 普通方法必須有返回值類型(沒有返回值寫void)

形參

方法中的變量必需要初始化賦值

值參數

ref(引用參數) 定義和引用的時候都要寫ref 把變量名(地址)傳進去 使用前必需要初始化賦值(當某個方法須要修改值類型數據時,ref參數一般是適用的)

out(輸出參數)彌補return只能返回一個值的不足 調用方法以前 不須要明確的被賦值,返回以前必需要賦值

ref 側重修改 out 側重輸出

params(可變參數數組) 必須放在最後

類中的每個成員均可以分爲實例成員(定義在類類內,沒有static修飾符修飾的)、靜態成員(定義在類內 使用static修飾(靜態成員屬於類 不屬於特定的對象 必需要經過類名去訪問)避免了建立實例的開銷)兩類

靜態類的全部成員都必須是靜態的

靜態方法能夠直接訪問靜態成員 不能夠直接訪問實例成員(經過對象去訪問)

實例方法能夠直接訪問靜態成員

靜態成員無需初始化(採用數據類型的默認值)

方法重載(同一類內)同名方法參數列表不一樣(返回值不是判斷重載的標準)

重寫:父類中的方法能夠被子類進行重寫,從而有不一樣於父類的實現

第一步:把父類中的方法(容許子類重寫)用virtual修飾;第二步:在子類中使用ovverride重寫從父類中繼承的虛方法。

new 隱藏父類的同名方法(有意隱藏)是一種靜態綁定機制,由對象定義時決定 定義的是什麼類型 就執行定義的類中的方法 看等號左邊 左邊是定義 右邊是實例化(在構建類庫時頗有用 能夠作版本控制)

ovverride 是一種動態綁定機制,由運行時的對象決定,看等號的右邊

構造函數 類裏面特殊的一種方法 名與類名相同 沒有返回值 能夠初始化成員變量(this 引用類當前的實例)

this 指向類自身、調用自身

構造函數是用new調用的

全部類型都集成自System.Object

GetType(檢查對象的類型(返回Type類型))、ReferenceEquals(比較引用)、Equals(檢查相等性)、GetHashCode(得到散列值)、ToString(將對象做爲字符串使用)

typeof 獲取對象的類型信息(傳的是類型名稱)

Equals(對於字符串 把引用相等 變成了值相等(對於引用類型,調用 ReferenceEquals)) 和 ReferenceEquals(判斷引用是否相等)

值類型包含簡單數據類型 枚舉 結構

引用類型包含 類 接口 數組

第四章 引用類型和值類型

類是對象的模板 對象是類的實例

枚舉:一組已命名的整形常量 是強類型常量值列別,是一組描述性的名稱(每一個元素的基礎類型是整形的 默認值從0開始 依次遞增1)

結構(值類型)(也能夠有構造函數(只能聲名有參的)) 類是引用類型

不一樣:  類                          結構

引用類型                    值類型

        能夠被繼承                  不能被集成

        能夠有默認構造函數          不能夠有默認構造函數

        能夠添加無參的構造函數      只能夠添加有參的構造函數

        建立對象必須用new           建立對象能夠不用new

        類中能夠給字段賦值          結構中給字段賦值是錯誤的

相同:均可以包含字段 方法 均可以實現接口

定義結構變量能夠不用new

值類型直接存儲在棧中

Simple Type; Struct Type; Enum Type

三角箭頭指向父類

值類型指向System.ValueType(全部值類型的父類)

引用類型指向引用類型(存儲了對值的引用)

值類型和引用類型最後都指向System.Object

把值類型變量賦值給Object類型的時候,會發生自動裝箱(boxing) 把Object變量賦值給一個與對象類型相同的值類型變量時, 須要進行拆箱

System.Collections;集合

System.Collections.Generic;集合的泛型

對值類型調用ToString()方法能夠避免裝箱

第五章 封裝、繼承、多態

繼承:好處:提升代碼重用性,實現多態

Inherit(繼承):子類和父類存在is-a關係;

當一些類之間且有相同的屬性和行爲時,反這部分屬性和行爲抽象到一個父類中:(不一樣子類之間且有相同的功能,而且功能的實現方式也徹底相同時,將該方法在父類中實現,提升程序代碼的可重用性和可維護性;不一樣子類之間且有相同的功能,但功能的實現方式不同時,將該方法放在父類中聲明,但不提供具體的實現)

繼承有傳遞性:(間接父類)(能夠獲取間接父類的方法)

繼承的單根性:一個類的直接父類只有一個

base 在子類中指代它的父類; 在子類中調用父類的構造函數

繼承中 若是父類寫了帶參數的構造函數 則默認無參的構造函數就被帶參婁的構造函數覆蓋了,不存在了;子類中構造函數默認會調用父類中默認的構造函數(解決方法:1. 在父類中添加默認無參數的構造函數; 2. 在子類的構造函數中指定調用父類中存在的構造函數)

有繼承時的數據初始化順序:建立子類對象的時候,在執行子類構造函數時,若是有父類,會先調用父類的構造函數,而後調用子類的構造函數(先實例化父類的數據成員,而後再實例化子類的構形成員)

子類繼承父類,父類派生子類  子類也叫派生類 父類也叫基類

有繼承關係時,執行子類構造函數時優先觸發執行父類的構造函數

base 調用父類的方法 調用父類的構造函數

父類沒有無參構造函數 子類必須指明調用哪一個構造函數

new 靜態綁定的一種機制

版本控制:繼承環境下是一個C#機制 能夠對類進行修改(建立新版本)不會意外地改變代碼的含義

建立密封類的理由:優化:密封一個類避免了與虛方法有關的系統開銷,這容許編譯器執行特定的優化 安全性:將類密封消除了由繼承形成污染的可能性(方法和屬性也可使用sealed修飾(被信息包的方法和屬性不容許在子類中繼承)

封裝encapsulation

封裝機制:屬性(字段)、 索引器(數組的訪問)、 方法、 訪問修飾符(有用形式:代碼隱藏)

當必需公開字段的訪問時,推薦使用常量、枚舉和只讀字段

public、 private、 protected、 internal

類型(命名空間下)的默認訪問修飾符爲internal

類型成員的默認訪問修飾符爲private

內部類

多態(polymorphism(pao li mao fei ze mu)):類的子類表現出的行爲能夠各不相同,這種我稱爲類的多態性

多態利用虛方法 把子類方法都重寫(vartual(啓用多態)override(重寫) 動態綁定(看new的是哪一個對象))

多態使用場景:一個程序有一組對象(它們是不一樣的對象,但它們都有共性),檢查第一個類型,而且執行合適的方法

第六章 抽象方法和抽象類

抽象類(用來約束子類的行爲(強制實現多態))

用abstract聲名,不能直接實例化(不能new);

是用來做爲基類的,用來提供多個派生類可共享的基類的公共定義 位天類繼承層次的頂端;

抽象類能夠包含抽象的成員 (抽象屬性、抽象方法(沒有方法體,用abstract修飾的方法))能夠包含非抽象的成員,甚至能夠包含虛方法;

子類必須實現抽象方法,除非子類也具備抽象性

數據成員也能夠抽象

抽象方法必須用override重寫

提供一系列約定,約束子類的行爲(強制約束)

提供一些共性的行爲

throw new NotImplementedException()未實現的異常

虛方法                          抽象方法

用virtual修飾              用abstract修飾

要有方法體,哪怕是一個分號  不容許的方法體

能夠被子類override          必須被子類override

除了密封類均可以寫          只能在抽象類中

里氏替換原則:

子類的對象可以替換其父類

父類的對象不可以替換子灰

父類的方法都要在子類中實現或者重寫

父類的可訪問性不能比子類低

虛擬成員或抽象成員不能是私有的

接口:

接口是一種規格說明定義了類必須實現的行爲

接口定義了類之間如何心良好定義和預期的行爲進行交互的契約,顯式定義了類之間應該如何進行交互

接口就是一組抽象成員的集合

接口相似天抽象基類:繼承接口的任何非抽象類型都必須實現接口的全部成員

不能直接實例化接口

接口能夠包含事件、索引器、方法和屬性

接口不包含方法的實現 也不能包含字段

類和結構可從多個接口繼承

接口自身可從多個接口繼承

一個類同時繼承類和接口時必須把類寫在最前面

接口成員都是隱式公共的和抽象的(不能指定訪問修飾符)

 

知足is-a用繼承 不知足is-a還擁有相似的功能

接口更得於程序的擴展,抽象類使程序層次結構更清晰

不一樣點

抽象類                              接口

用abstract定義                 用interface定義

只能繼承一個類                  能夠實現多個接口

非抽象派生類必須實現抽象方法    實現接口的類實現全部成員

須要override實現抽象方法       直接實現

相同

不能實例化  包含未實現的方法    派生類必須實現未實現的方法

theftproof(防盜的)   burglarproof(防盜的)

面向接口編程(傳遞接口)

第七章 委託和事件

委託 delegate(最終(本質)是類) 使程序能夠在運行時動態調用不一樣的方法

它所調用的方法的名稱 該方法的參數 該方法的返回值

一類方法:具備相同的參數與返回值的方法

public delegate int(返回值類型) Call(委託名稱)(int num1, int num2);委託和方法必須具備相同的參數和返回值

定義委託類型

[訪問修飾符] delegate 返回類型 委託名 (形參表);

聲明委託對象

委託名 委託實例名;

建立委託對象(肯定與哪些方法進行綁定)

委託實例名 = new 委託名(某個類的方法);

使用委託調用方法

委託實例名(實參表);

委託類型通常聲名在命名空間內 也能夠建立在類內部

委託是一種數據類型,與類的級別相同 (通常定義在命名空間以內)(除非與某個類關係十分緊密 寫到類裏面)

方法與方法之間 類型與類型之間 要保留空行 單行註釋寫後面

方法內邏輯用空行隔開

委託鏈

事件是具備類型成員身份、有限制的調用以及賦值等特殊特性的委託

發送事件的類稱爲「發行者」,也稱爲「事件源」

接收事件提類稱爲「訂戶」,也稱爲「接收者」

[修飾符] event 委託名 事件名;

事件實際就是一種特殊的委託對象

delegate void MyEventHandler();

事件的聲明

class

事件的訂閱就是向委託的調用列表中添加方法,是經過事件加上運算符 += 來實現的

事件名 += new 委託名(方法名);

要先判斷事件對象是否是空的

事件:

定義委託(將來指向事件處理函數)

基於MyEventHandler委託聲明事件

定義事件的方法(執行事件處理函數)

訂閱事件(向事件的委託鏈中註冊方法(事件處理函數))

EventArgs(是包含事件數據的類的基類)

異常處理

try塊(可能出現異常的代碼)catch塊(出現異常時對異常的處理)

異常指運行時的錯誤finally(不管有沒有異常 最終都會執行)善後工做(資源的清理和釋放)throw(拋出異常)是吧catch塊出現的異常繼續往上拋

本身寫完的代碼 本身測了沒有任何問題以後再交給測試

System.Exception(異常)

System.SystemException(公共語言運行時引起異常)

System.ArgumentException:System.ArgumentNullException

System.ArithmeticException:System.DivideByZeroException | System.OverflowException

System.Data.DataException

System.FormatException

System.IO.IOException

System.IndexOutOfRangeException

| System ApplicationException(用戶程序引起異常)

throw new Exception(用於拋出新的異常)

第八章 集合 範型

System.Collections.Generic;(存集合 泛型)

Ienumerable(實現了這個接口就能夠foreach遍歷)

<T>(T表明Type類型) | <K,V>(表明泛型)

Icollection 接口是System.Collections 中最基礎的接口,定義了集合類型支持的行爲

ArrayList(是一個可動態維護長度的集合(動態數組))(Count(個數))(.Remove(對象名) | .RemoveAt(索引))

Hashtable(字典)

Queue(隊列:先進先出的數據結構(FIFO))

SortedList

Stack(堆棧(後進先出(LIFO)))

Idictionary<K, V> 是Hashtable的泛型版

泛型接口

使用非泛型類實現泛型接口(泛型接口必須指定數據類型,失去了泛型接口的意義)

使用泛型類實現泛型接口

定義一個泛型類 後邊能夠用where限制T的類型

where : struct 值類型

where : class 引用類型 類 接口 委託 數組

where : new() 必需要包含無參數的構造函數 與其它約束一塊兒使用時, 必須最後指定

where : <基類名> 是指定類或它的派生類

where : <接口名稱> 可指定多個接口約束,約束接口也能夠是泛型的

where : U T 要麼是U類型 要麼是U類型的子類

IComparable[<>],Icomparer[<>] 比較接口

委託名 = () => {方法體};(一條語句能夠省略{}和return);

Lambda表達式 =>(gos to(分隔符)) 左側是參數列表定義(無參數的寫括號; 一個參數能夠省略小括號) 右側是方法體的定義方法體的多條語句用大括號括起來

using System;

 

namespace 泛型委託

{

    class Program

    {

        static void Main(string[] args)

        {

            //調用TestMethod

            //法一

            //Call call = Say;

            //TestMethod(call);

            TestMethod(Say);

            Console.WriteLine("-------------------------------");

 

            //法二

            //call = delegate(int num) { return num * 10; };

            //TestMethod(call);

            TestMethod(delegate(int num) { return num * 10; });

            Console.WriteLine("-------------------------------");

 

            //法三

            //call = x => x * 10;

            //TestMethod(call);

            TestMethod(x => x * 10);

            Console.WriteLine("-------------------------------");

 

            Console.ReadKey();

        }

 

        private static int Say(int num)

        {

            return num * 10;

        }

 

        public static void TestMethod(Call call)

        {

            int re = call(10);

            Console.WriteLine(re);

        }

    }

 

    public delegate int Call(int num);

}

泛型類就是一個模板類(泛型參數)

Action 無參數 無返回值的委託

Action<T...> 有n個參數 無返回值的委託(0 <= n <= 16)

Func<T...> 有n個參數 有指定返回值類型的委託(0 <= n <= 16)

Binary 二進制

Directory計算機目錄結構

DriveInfo計算機驅動器的詳細信息

File、FileInfo

Environment.CurrentDirectory(物理路徑)

Exists(檢測文件是否存在)

文件操做

建立文件流

[建立讀寫]

執行讀寫操做

[關閉讀寫]

關閉文件流

FileMode枚舉 Create(建立新的 已存在就改寫) Open(打開) CreateNew(建立新的 已存在報錯) Append

FileAccess

FileShare(None(讀佔))

StreamWriter建立寫入器,寫入一個流

大文件讀寫

Using 語句

實現Idisposable接口的類能夠用using語句自動釋放資源

經常使用的有(File Font等)

多個對象用’,’分隔

 

System.Text.Encoding.Default.GetString(bytes(字節數組))字節數組直接轉成字符串

System.Text.Encoding.UTF8.GetBytes(info(字符串))將字符串轉換成字節數組

寫入必寫:fs.Flush() 清空緩衝區,確保寫入文件

優勢:

XML文檔的內容和結構徹底分離

互操做性強:做爲純文本格式的文件,能夠方便也穿越防火牆,在不一樣操做系統上的不一樣系統之間通訊

規範統一:XML具備統一的標準語法

支持多種編碼

可擴展性強

使用:

數據交換(Json)

Web服務

內容管理

Web集成

參數配製

結點的屬性 結點的內容

XmlDocument 表示當前XML整個文檔

DocumentElement屬性 獲取根節點(Element(元素))

ChildNodes 獲取全部子節點

Load() 讀取整個XML的結構

XmlNode 對象表示XML文件的單個節點(不分根結點仍是子結點) 子節點都是XmlNode

Load() 讀取整個XML的結構

InnerText屬性 當前節點的值

Name屬性 當前結點名稱

ChildNodes屬性 當前節點的全部子節點

TreeView控件 每次都要清空節點 不然會累加

Tag屬性 能夠綁定與對象關聯的用戶定義數據

bookNode.Attributes[「」].value;

SelectSingleNode 選擇惟一的一個結點

SetAttribute(「屬性」, 「值」) 添加屬性

AppendChild() 括號中添加到調用都的子結點的末尾

Save()保存

RemoveChild() 刪除節點

序列化/反序列化(serialization)

GUI圖形用戶界面

[Serializable]特性標誌的才能夠序列化(想要序列化 他的父類也要標記)

System.Runtime.Serialization;命名空間下

BinaryFormatter(二進制格式化器)

SOAP:簡單對象訪問協議

[NonSerialized]不被序列化

System.Runtime.Serialization.Frmatters.Soap;

System.Xml.Serialization

XmlSerializer xs = new XmlSerialiser(類型)

自定義序列化須要讓類實現Iserializable接口

自定義構造函數 傳對象(實現接口的同樣)(反序列化時用)

Procss進程

Thread線程 進程的一個執行單元,一個進程能夠包含若干個線程

線程是CPU調度和分配的基本單位

每一個進程都有一個主線程

suspended  輪詢

Process.GetProcesses(「」)指定計算機上的進程列表

ListView控件 支持視圖(View屬性 有五種視圖)(Details(顯示多列))

ListViewItem ListView的數據項

LargeImageList(大圖標列表)

Details 要設置列的集合

多線程

System.Threading 命名空間

Thread類

IsAlive屬性 指示當前線程執行狀態

IsBackround 指示某個線程是否爲後臺線程

Priority屬性

Start方法 啓動線程

Join方法 通常出如今Abort以後

Sleep方法

Abort方法 引起ThreadAbortException 開始終止此線程

調用Sleep方法的是類的自己,而不是類的實例

休眠的是該語句所在的線程,而不是其它線程

Highest AboveNormal Normal BelowNormal Lowest(優先級)

Main 方法是主線程

同一時間只有一個進程能進入代碼臨界區

在非建立控件的線程中訪問控件,這是C#中不容許的

每一個控件上都有一個方法叫Invoke(在擁有控件的基礎窗口句柄的線程上,用指定的參數列表執行指定委託)

IP(Internet Protocol(Internet網絡協議))

21 FTP協議

23 遠程登錄

25 SMTP(Simple Mail Transfer Protocol(簡單郵件傳輸協議))

53 域名服務器(DNS)

80 HTTP協議

OSI 開放系統互連參考模型(物理層、數據鏈路層、網絡層(IP協議)、傳輸層(TCP協議)、會話層、表示層、應用層)

TCP/IP 是一組網絡通訊協議的總稱,它規範了網絡上的全部通訊設備,尤爲是一個主機與另外一個主機

System.Net;

IPAddress IP地址的轉換、處理等功能

Dns 本地或遠程域名等功能

IPHostEntry Internet主機相關信息

IPEndPoint 網絡地址表示爲IP地址和端口號

套接字

套接字是支持TCP/IP協議的網絡通訊的基本操做單元(能夠看作是不一樣該機間的進程進行雙向通訊的端點,構成了單個 主機內及想個網絡間的編程界面)

Socket(套接字)

Network Management Software(網絡應用)

套接字 分同步 異步兩種

同步在經過Socket進行鏈接、接收、發送操做時,客戶機或服務器在接收到對方響應前會處於阻塞狀態。它適用於數據處理不太多的場合

異步在經過 Socket進行鏈接、接收、發送操做時,客戶機或服務器不會處於阻塞方式,而是利用callback(回調函數)機制進行鏈接、接收和發送處理,這樣的能夠在調用發送或接收的方法後直接返回,並繼續執行下面的程序處理

System.Net.Sockets

經常使用的兩個類:TcpClient(用於鏈接、發送和接收數據) TcpListener(用於監聽是否有傳入的鏈接請求)

UdpClent UDP(用戶數據報協議)

Socket類

面向鏈接的套接字之間的鏈接過程能夠分爲三個步驟:服務器監聽,客戶端請求,鏈接確認

屬性:

ReceiveBufferSize 接收緩衝區大小

SendBufferSize 發送緩衝區大小

方法:

Colse 關閉TCP鏈接並釋放與TcpClient關聯的資源

Connect 將使用主機名和端口號將客戶端連到遠程TCP主機

GetStream 返回用於發送和接收數據的NetworkStream

Buffer(緩衝區)

TcpListener 具備偵聽進入的TCP鏈接的方法

方法

AcceptSocket 返回與過程客戶端通訊的套接字

AccepTcpClient 接受的鏈接請求

Start 開始偵聽進入的鏈接請求

Stop 關閉偵聽器

程序集:.exe .dll

程序集結構:程序集清單、類型元數據、IL代碼、資源

AssemblyInfo.cs用於配置程序集的(在Properties文件夾下)

元數據:完整地描述類型(類 接口 結構 枚舉 委託)的能力 是.NET平臺的總體上關鍵要素

Extends(繼承)

Field (源數據)

特性就是用於類型(類、接口、結構等)、成員(屬性、方法等)、程序集或模塊的代碼註解(最主要目的就是自描述)

[CL SCompliant] 強制被註釋項聽從CLS

[DllImport] 容許.NET代碼調用任意非託管的C或C++基類庫,包括操做系統中的API

[Obsolete] 過期的 帶true就會產生編譯錯誤

[Serializable] 可序列化

[NonSerialized] 不可序列化

[WebMethod] 可經過HTTP請求調用

Attribute 全部屬性的基類

自定義特性類要在最後綴上Attribute

GetType() typeof()

反射(reflection) 反射用於在運行時經過編程方式得到類型信息

Assembly

AsseblyName

EventInfo

MemberInfo

MethodInfo

ParameterInfo

PropertyInfo

Type t = Type.GetType(「類型名稱」);

t.GetMethod();獲取對應類型的全部公共方法

t.GetFields();獲取對應類型的全部公共字段

t.GetProperties();獲取對應類型的全部公共屬性

t.GetInterfaces();獲取對應類型的實現或繼承的全部接口

t.BaseType;獲取直接父類

t.IsAstract;(是否是抽象的)

t.IsSealed(是否是密封的)

t.IsGenericTypeDefinition(是否是泛型定義)

t.IsClass(是否是類)

t.IsInterface(是否是接口)

晚期綁定:是一種建立一個給定類型的實例並在運行時調用其成員,而不須要在編譯時知道它存在的一種技術

反射就是一種晚期綁定(花費更多的系統資源開銷使得應用程序能夠在運行時獲取一些未知的信息)

Assembly ass = Assmbly.LoadFile(「程序集路徑」);加載程序集

Type t = ass GetType(「MyAssembly.Car」);

ass.CreateInstance(「指定類型」);(使用系統激活器建立類的實例)建立對象(經過反射建立的對象都是object類型)

Activator(System命名空間下)(使用默認的構造函數建立類的實例)

Instance(實例)

MethodInfo m = t.GetMethod(「方法名」);

m.Invoke(, )兩個參數 一個是程序集對象 一個是object類型的數組(方法返回值也是object類型的)

 

 

 

版權聲明:本文版權歸做者和博客園共有,歡迎轉載,但未經做者贊成必須保留此段聲明,且在文章頁面明顯位置給出原文鏈接,不然保留追究法律責任的權利。

做者:黯淡の青春    博客地址:http://www.cnblogs.com/wuwangqianxun/

相關文章
相關標籤/搜索