程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> C#學習記載

C#學習記載

編輯:C#入門知識

C#學習記載。本站提示廣大學習愛好者:(C#學習記載)文章只能為提供參考,不一定能成為您想要的結果。以下是C#學習記載正文


轉眼幾個月沒更博了,把幾個月前學C#的筆記發一下,就記載了點教重要的點子而已

 

1.打印

Console.WriteLine(); 打印

Console.ReadKey(); 按一個按鍵持續執行

Console.ReadLine(); //用戶輸出文字的時分順序是暫停的,用戶輸出終了點回車,把用戶輸出的東西做為前往值

例:

string s =  Console.ReadLine(); 讀取出來的是字符串,所以不能用其他類型接納

 

 

2.數據類型:

值類型:int、float、double、char、byte、Boolean、枚舉

援用類型:DateTime、string、一切類

 

類型轉換:

值類型:從小到大自動轉,從大到小強迫轉,(類型),Convert.To***()

援用類型:需求有承繼關系才可以轉換

轉換成字符串: ToString()

類型轉換:cast 強轉(位數有差,能夠喪失)

      convert 思索數據意義的轉換

C#字符串與OC分歧,與C不分歧,不思索最後的\0

 

 

‘a’   是char類型,”a”是string類型

@“\\\\” @表示字符串中的\不當成本義符

 

 

3.字符串的處置

·C#中單個字符用單引號包括就是char類型,(‘a’),單引號中放且只能放一個字符。

·單個字符也可以表示為字符串,還可以有長度為0的字符串。

·運用s.Length屬性可以來取得字符串中的字符個數

·string可以看做是char的只讀數組。char c = s[1];例子:遍歷輸入sting中的每個元素。

·c#中字符串有一個重要的特性:不可變性,字符串一旦聲明就不再可以改動。所以只能經過索引來   

  讀取指定地位的char停止修正。

·假如要對char停止修正,那麼久必需創立一個新的字符串,用s.ToCharArray()辦法失掉字符串的

 char 數組,對數組停止修正後,調用new string(char[])這個結構函數來創立char數組的字符串。一

 旦字符串被創立,那麼char 數組的修正也不會形成字符串的變化。例子:將字符串中的A交換成a.

 

 

 

字符串不可變性(分配的內存塊裡的不可變)

string s1 = @“hello”;

char[] chars = s1.ToCharArray();

string s2 = new string(chars);

此時改動後s2為aello,而s1不變,所以只是復制了一份char數組數據,於源數據有關

 

如string s = “abc”; s = @“123”

最後值改動了,其實不是

要區分變量名和變量指向的值得區別。順序中可以有很多字符串,然後由字符串變量指向他們,變量可以指向其他的字符串,但是字符串自身沒有變化。字符串不可變性指的是內存中的字符串不可變,而不是變量不變。

 

 

4.字符串類的常用函數

 

1)

·ToLower() 失掉字符串的小寫方式。

·留意字符串是不可變的,所以這些函數都不會直接改動字符串的內容,而是把修正後的值經過函數·前往值的方式前往。s.ToLower()與s = s.ToLower()

·ToUpper():失掉字符串的大寫方式:Trim()去掉字符串兩端的空白。

·s1.Equals(s2,StringComparison.OrdinallgnoreCase),兩個字符串停止區分大小寫的比擬

Ignore:疏忽,Case:大小寫

==是區分大小寫的比擬,Equals()是疏忽大小寫的比擬

 

 

2)聯系字符串

string[] str = strings.Split(‘,’); 將字符串依照指定的聯系符聯系成字符串數組

 

將字符串依照指定的char聯系符聯系成字符串數組(options取RemoveEmptyEntries時,移除後果中的空白字符串)

string str1 = @“aa,bb,,cc,dd”;呈現空字符串 

string[] str = strings.Split(new char[]{’,’},StringSplitOptions.RemoveEmptyEntries);

 

將字符串依照指定的string聯系符聯系成字符串數組(同上)

string[] str = strings.Split(new string[]{“aa”},StringSplitOptions.RemoveEmptyEntries);

 

 

3)交換字符串

string.Replace(“a”,”b”); 交換string外面的a全部成b

獲取子字符串:

string.Substring(n);     從第n位開端截取string的字符串到完畢,包括n

string.Substring(n,m);     從第n位開端截取string的字符串長度為m(m超越string長度會出錯),包括n

 

 

4)前往bool值 運用:string.Contains

Contains(string value)判別字符串中能否含有子串value

StartsWith(string value)判別字符串中能否以子串value開端

EndsWith(string value)判別字符串中能否以子串value完畢

前往int

IndexOf(string value)取子串value第一次呈現的地位

 

 

 

 

 

 

枚舉,跟其它言語沒什麼區別

枚舉的意義就在於限定變量的取值范圍

enum sender{a,b}

 

 

foreach (string name in names){}; 遍歷,還有for,見多了

 

 

static void function(params string[] values){};

params 可變參數 參數必需是形參表中的最後一個參數

 

 

函數重載:函數名分歧,參數不分歧,可做兩個函數運用,與有無前往值有關(不嚴謹)

 

 

 

函數的ref和out參數

函數參數默許是值傳遞的,也就是”復制一份”

而ref是將自身傳出來,非復制

 

static void Main(string[] args)

{

int age = 20;

1: IncAge(age);

2: IncAge(ref age);

Console.WriteLine(age); //1打印後果為20,由於傳進的只是形參值;2打印後果為21,

Console.ReadKey;

}

1:

static void IncAge(int age)

{

age++;

}

2:

static void IncAge(ref int age)

{

age++;

}

 

ref必需先初始化由於是援用,所以必需先“有”,才干援用,而out是外部為內部賦值,所以不需求初始化,而且內部初始化也沒有用。

ref使用場景外部對內部的值停止改動,out則是外部為內部變量賦值,out普通用在函數有多個前往值的場所。

 

 

string str = Console.ReadLine();

int i;

int.TryParse(str,out i); //轉換 前往值true  or false

 

ref使用,如交流兩個數的值

 

 

5.結構函數

 

·結構函數用來創立對象,並且可以在結構函數中對對象停止初始化。

·結構函數是用來創立對象的特殊函數,函數名和類名一樣,沒前往值,連void都不必。

·結構函數可以有參數,new對象的時分傳遞函數參數即可

·結構函數可以重載,也就是有多個參數不同的結構函數。

·假如不指定結構函數,則類有一個默許的無參結構函數。

 假如指定了結構函數,則不再有默許的無參結構函數,假如需求無參結構函數,則需求自己來寫。

如:

static void Main(string[] args)

{

Person p1 = new Person();

Person p2 = new Person(“a”);

Person p3 = new Person(“a”,2);

Console.ReadKey;

}

class Person

{

public Person()

{

 

}

public Person(string name)

{

 

}

public Person(string name,int age)

{

 

}

}

 

 

 

 

 

 

 

 

 

 

對面可以叫做類的實例,字段就是類的形態

面向對象的三個特性:封裝、承繼、多態。

 

 

 

 

 

 

 

 

 

6.屬性(可公可公有)

習用法:屬性掃尾字母大寫,字段掃尾字母小寫

public字段和屬性的區別,屬性可以停止合法設置值的判別

 

class person

{

private int age;

public int Age

{

set //賦值

    {

if(age>0)

{

return; //假如return this.Age;形成死循環,自己給自己賦值

}

this.age = value; //value代表用戶賦值過去的值

    }

get //取值

    {

return this.age;

    }

 

}

}

 

 

 

 

 

7.異常

try{

執行到錯誤點後,不再往下執行

}

catch(Exception ex){

出錯後執行,再跳到裡面持續執行

Console.WriteLine(“數據錯誤:”+ex.Message+”。異常堆棧:”+ex.StackTrace);

}

 

throw:拋出   catch:抓住

//自定義報錯異常聲明

else{

throw new Exception(“自定義異常”);

}

 

 

const 常量:不會改動的量

 

靜態變量:static 屬於全局變量,無需new

在static成員中不能直接調用非static成員

例:

class Person

{

public static int TotalCount;

public int Age;

public static void number()

{

Console.WriteLine(@“{0}”,TotalCount);

//可調用TotalCount,但調不了Age

}

 

public void Other()//非static成員中科院調用static成員

{

Console.WriteLine(@“{0},{1}”,TotalCount,Age);

}

}

 

 

 

 

 

 

8.靜態類

static class Person

{}

無法被new的類是靜態類,靜態類普通用來完成一些函數庫。

 

 

 

 

 

 

 

 

 

 

 

9.命名空間

 

當有多個類重名時,可放不同文件夾下,或namespace不一樣,運用時寫全途徑就行

以後類文件裡有Person類

另一個文件夾名為hr,或namespace不分歧的類上面有個類Person

 

在以後類文件裡運用hr文件夾裡的Person類時如下:

假如要運用的類和以後的類不在同一個namespace,則需求添加using援用

導入該文件,在頂部

using 命名空間.hr;

命名空間.hr.Person p2 = new 命名空間.hr.Person();

//好像文件的全途徑一樣

 

 

10.索引

C#中提供了依照索引器停止訪問的辦法

定義索引器的方式:string this[int index]

{

get {

return “”;

}

set{}

}

string為索引器的類型,[]中是參數列表。停止索引器寫操作就是調用

set代碼塊,在set外部運用value失掉用戶設置的值;停止讀操作就是

執行get代碼塊。

索引器參數可以不止一個,類型也不限於int,幾號可以是恣意類型。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

11.

項目看法,從各個中央復制

 

 

String.Empty是string類的一個靜態常量;

String.Empty和string=””區別不大

 

string s1 = "";

string s2 = string.Empty;

if (s1 == s2)<br>{

Console.WriteLine("如出一轍!");

}   

// 後果都是True

 

String.Empty和string=””一樣,異樣需求占用內存空間,為什麼引薦優先運用String.Empty ?

string.Empty只是讓代碼好讀,避免代碼發生歧義

 

 

 

 

 用於控制一個對象能否激活,一個對象激活當且自身active=true,並且它的父結點也都active。相當API有:

  1)GameObject.SetActive

  2)GameObject.activeSelf

  3)GameObjectd.activeInHierarchy

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Socket.BeginReceive 辦法 (Byte[], Int32, Int32, SocketFlags, AsyncCallback, Object)

 

語法

[HostProtectionAttribute(SecurityAction.LinkDemand, ExternalThreading = true)]

public IAsyncResult BeginReceive(

byte[] buffer,

int offset,

int size,

SocketFlags socketFlags,

AsyncCallback callback,

object state

)

 

參數

buffer

Byte 類型的數組,它是存儲接納到的數據的地位。

offset

buffer 參數中存儲所接納數據的地位,該地位從零開端計數。

size

要接納的字節數。

socketFlags

SocketFlags 值的按位組合。

callback

一個 AsyncCallback 委托,它援用操作完成時要調用的辦法。

state

一個用戶定義對象,其中包括接納操作的相關信息。當操作完成時,此對象會被傳遞給 EndReceive 委托。

前往值

Type: System.IAsyncResult

援用異步讀的 IAsyncResult。

 

 

 

 

 

 

異常

 

 

Exception

Condition

ArgumentNullException

buffer 為 null。

SocketException

試圖訪問套接字時發作錯誤。有關更多信息,請參見備注局部。

ObjectDisposedException

Socket 已封閉。

ArgumentOutOfRangeException

offset 小於 0。

- 或 -

offset 大於 buffer 的長度。

- 或 -

size 小於 0。

- 或 -

size 大於 buffer 的長度減去 offset 參數的值。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Socket.BeginReceive 辦法 (Byte[], Int32, Int32, SocketFlags, AsyncCallback, Object)

開端從銜接的 Socket 中異步接納數據。

命名空間:   System.Net.Sockets

順序集:  System(System.dll 中)

 

語法

 

[HostProtectionAttribute(SecurityAction.LinkDemand, ExternalThreading = true)]

public IAsyncResult BeginReceive(

byte[] buffer,

int offset,

int size,

SocketFlags socketFlags,

AsyncCallback callback,

object state

)

 

參數

buffer

Byte 類型的數組,它是存儲接納到的數據的地位。

offset

buffer 參數中存儲所接納數據的地位,該地位從零開端計數。

size

要接納的字節數。

socketFlags

SocketFlags 值的按位組合。

callback

一個 AsyncCallback 委托,它援用操作完成時要調用的辦法。

state

一個用戶定義對象,其中包括接納操作的相關信息。當操作完成時,此對象會被傳遞給 EndReceive 委托。

前往值

Type: System.IAsyncResult

援用異步讀的 IAsyncResult。

異常

 

 

Exception

Condition

ArgumentNullException

buffer 為 null。

SocketException

試圖訪問套接字時發作錯誤。有關更多信息,請參見備注局部。

ObjectDisposedException

Socket 已封閉。

ArgumentOutOfRangeException

offset 小於 0。

- 或 -

offset 大於 buffer 的長度。

- 或 -

size 小於 0。

- 或 -

size 大於 buffer 的長度減去 offset 參數的值。

 

 

 

備注

 

 

將 count 個字節從 src 復制到 dst,前者開端於 srcOffset 然後者開端於 dstOffset。

開發人員應謹記 BlockCopy 辦法運用偏移量訪問 src 參數,而不是運用索引或數組上上限等編程結構。例如,假如運用使用順序的編程言語聲明一個下限為零,上限為 -50 的 Int32 數組,然後將該數組和偏移量 5 傳遞給 BlockCopy 辦法,則該辦法將訪問的第一個數組元素是該數組的第二個元素(位於索引 -49 處)。此外,首先訪問數組元素 -49 的哪個字節取決於執行使用順序的計算機的 Edian 設置。

 

 

 

 

 

 

 

 

 

 

Add和AddRange

 

Add:將指定的對象添加到……中

AddRange:向……末尾,添加數組

-

在群體操作時,運用AddRange取代Add 

 

用AddRange可以讓我們要參加的東西一次性參加,而不要每次都加一次,這樣顯然可以放慢速度。簡直一切的windows control都支持Add和AddRange兩種辦法。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved