亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

.NET常用類庫知識總結

2019-11-14 16:15:32
字體:
來源:轉載
供稿:網友
常用類庫之.NET中的字符串

字符串的特性

1.不可變性
       由于字符串是不可變的的,每次修改字符串,都是創建了一個單獨字符串副本(拷貝了一個字符串副本)。之所以發生改變只是因為指向了一塊新的地址。
 
2.字符串池(只針對字符串常量)
      當一個程序中有多個相同的字符串常量時,多個變量指向的是內存中同一塊字符串!這個特性叫字符串池。之所以字符串,不會造成程序混亂,是因為字符串的不可變性。
 

String的成員方法和屬性

PS:這里重載方式很多,不一一列舉。

1.Contains(String str)  判斷字符串中是否包含,指定字符串。

    用法

      string str ="helloworld";

      str.Contains("hello");   //true 

2.StartsWith(String str)    

          判斷字符串對象是否以,指定字符串開頭。

3.EndWith(String str)

         判斷字符串對象是否以,指定字符串結尾。

4.Length 屬性

         獲取字符串的長度

5.IndexOf(String str) 

         獲取指定字符/字符串.....在對象字符串中第一次出現的位置。

6.LastIndexOf(String str)

         獲取指定字符/字符串....在對象字符串中最后一次 出現的位置。

7.SubString(int start)

   SubString(int strat, int length)   從指定位置,截取字符串。

8.ToLower()

        將串轉換成小寫,返回一個新的全小寫的字符串。

9.ToUpper()

       將串轉換成大寫,返回一個新的全大寫的字符串。

10. Replace(string oldStr,string newStr)

        用新的字符串,替換對象字符串中老的字符串部分。

11.Trim()   去掉對象字符串兩端的空格

        TrimStart() 去掉對象字符串 開頭的空格

        TrimEnd()  去掉對象字符串  結尾的空格

        PS:如果想去掉其他的開頭結尾的其他字符其他的字符,可以采用Trim()的其他重載。

12.Split()     把對象字符串,按照指定字符分割成一個字符串數組!

     Split()    的重載同樣很多,

     例如 Split(new char[]{'|'}, StringSplitOption.RemoveEmptyEntries)// 刪除空數據

String的靜態方法

1.IsNullOrEmpty(string)

       //string.IsNullOrEmpty(str1) 判斷某字符串是否為null,或者為空字符串。

2.Equals(string,string,StringComparison.OrdianlIgnore)
        忽略大小寫比較兩個字符串是否相同。
3.Join(string,string[])
        把一個數組按照指定字符串,拼接成一個字符串。
.NET中的計時器控件Timer

本章借介紹一些粗淺的Timer控件使用方法。

介紹Timer控件的常用屬性和事件

1. Interval 屬性表示 Timer控件的時間間隔。

    類型是int默認是毫秒。

2. Enabled 屬性 表示Timer控件是否激活。

如果激活的話,一進入Timer的Tick事件就開始執行。所以默認是false

3. Start() 方法

    開始執行

4. Stop() 方法

    停止執行

5. Tick  事件

    表示Timer控件將要執行的代碼。

常規使用方式

1.添加一個Timer控件

2.設置好必要的屬性后。直接寫 timer_Tick事件。在事件中寫個停止條件就好了。

使用Lambda表達式調用Timer

Timer timer = new Timer();

timer.Interval = 100;

//使用Lambda表達式

timer.Tick += (sender,e) =>

{

     if (巴拉巴拉巴拉)

        {                   

          timer.Stop();

        }

};

timer.Start();

 

.NET中的StringBuilder

為什么要使用StringBuilder

為什么使用StringBuilder要從string對象的特性說起。

string對象在進行字符串拼接時,因為字符串的不可變性,string對象會每次拼接,都會復制一個副本出來進行運算,而本身的串仍然留在內存中,大量的臨時片段會造成不可忽視的性能損耗。所以在進行大量的字符串拼接時建議使用StringBuilder

 

StringBuilder的簡單使用方式

string s1 = "33";

string s2 = "44";

string s3 = "55";  //需求是把  s1 s2 s3拼接在一起。這是一種典型的字符串拼接。

//使用StringBuilder ,不會產生無用的臨時字符串。

StringBuilder sb =new StringBuilder();

//拼接方式一

sb.Append(s1);

sb.Append(s2);

sb.Append(s3);

//拼接方式二      

//因為Append()方法會返回一個this,也就是對象本身。所以可以使用這種方式。

//鏈式編程  Jquery中常用這種方式

sb.Append(s1).Append(s2).Append(s3); 

//最后把sb.ToString()一下就好了。

PS:AppendLine()方法可以 自動添加一個回車。

 
.NET 中的DateTime

DateTime簡介

DateTime是.NET中的時間類型,可以通過DateTime完成諸如獲取當前的系統時間等操作。
DateTime在.NET中是一個結構體,而并不是一個類。
clipboard 

如上圖所示,clipboard[1]這個圖標在VS中 表示結構體。

DateTime的常用方法和成員

1.Now
獲取當前系統時間。格式如下圖

clipboard[2]    

2.Today
獲取當前今日日期。格式如下圖

clipboard[3]

3.年 月 日 時 分 秒
接下來的幾個對象,必須通過
DateTime.Now(或者DateTime.Today)再點才能引用的到。
  Year      獲取年       Hour      獲取小時
  Month  獲取月       Minute  獲取分鐘
  Day      獲取日        Second  獲取秒

//以Year為例:DataTime.Now.Year

4.DayOfWeek、DayOfYear
獲取當前日期是星期幾  

以及獲取當前日期是一年中的第幾天

5.TryParse()
判斷是否是時間類型,參數中有一個out可以輸出一個DateTime對象。

6.AddDays()、AddHours() 

在當前時間基礎上加幾天  返回一個DateTime
在當前日期基礎上加幾個小時  返回一個DateTime
7.Subtract(DateTime.Now)

比較兩個時間的 時間差   返回一個TimeSpan

日期時間格式字符 ToString()

預定義模式
DateTime date =DateTime.Now;
date.ToString(
format
  參數
format格式詳細用法
格式字符 關聯屬性/說明
d ShortDatePattern
D LongDatePattern
f 完整日期和時間(長日期和短時間)
F FullDateTimePattern(長日期和長時間)
g 常規(短日期和短時間)
G 常規(短日期和長時間)
m、M MonthDayPattern
r、R RFC1123Pattern
s 使用當地時間的 SortableDateTimePattern(基于 ISO 8601)
t ShortTimePattern
T LongTimePattern
u UniversalSortableDateTimePattern 用于顯示通用時間的格式
U 使用通用時間的完整日期和時間(長日期和長時間)

y、Y YearMonthPattern

自定義模式
 
d 月中的某一天。一位數的日期沒有前導零。
dd 月中的某一天。一位數的日期有一個前導零。
ddd 周中某天的縮寫名稱,在 AbbreviatedDayNames 中定義。
dddd 周中某天的完整名稱,在 DayNames 中定義。
M 月份數字。一位數的月份沒有前導零。
MM 月份數字。一位數的月份有一個前導零。
MMM 月份的縮寫名稱,在 AbbreviatedMonthNames 中定義。
MMMM 月份的完整名稱,在 MonthNames 中定義。
y 不包含紀元的年份。如果不包含紀元的年份小于 10,則顯示不具有前導零的年份。
yy 不包含紀元的年份。如果不包含紀元的年份小于 10,則顯示具有前導零的年份。
yyyy 包括紀元的四位數的年份。
gg 時期或紀元。如果要設置格式的日期不具有關聯的時期或紀元字符串,則忽略該模式。
h 12 小時制的小時。一位數的小時數沒有前導零。
hh 12 小時制的小時。一位數的小時數有前導零。
H 24 小時制的小時。一位數的小時數沒有前導零。
HH 24 小時制的小時。一位數的小時數有前導零。
m 分鐘。一位數的分鐘數沒有前導零。
mm 分鐘。一位數的分鐘數有一個前導零。
s 秒。一位數的秒數沒有前導零。
ss 秒。一位數的秒數有一個前導零。

 

.NET中的異常和異常處理

.NET中的異常(Exception)

.net中的中異常的父類是Exception,大多數異常一般繼承自Exception。

可以通過編寫一個繼承自Exception的類的方式,自定義異常類!

異常處理機制

Try

{

    可能發生異常的代碼

    后續代碼     

}

Try以外的代碼

catch(Exception e)

{

}

finally

{

}

上述代碼描述如下

1.誰能執行 在異常處理中,一旦try里面有了問題,程序會放棄異常的后續代碼直接跳到catch中。

執行完了catch中的代碼,繼續執行Try以外的代碼。

2.關于catch()中的參數e

e就是發生異常的異常類對象,可以任意取名。不是必須叫e的。

3.只拋一個

一塊try中的代碼只能拋出一個異常。

為什么呢?

因為一旦異常就拋出了啊,后面有也不執行了呀!

4.獲取信息

可以通過 e.Message獲取異常信息

5.必須執行

finally  無論如何都會執行

6.可以沒有catch

可以只有 try catch

也可以只有try  finally

優秀的異常處理作風

1.不要逃避問題不要只把異常catch住,什么都不做,或者只是打印一下,這不是優秀的“異常處理”作風。

不知道怎么處理異常,就不要catch。讓他暴露出來。既然發生異常了,問題就肯定是有的,逃避不是辦法,直面他,才能解決他。尤其在分層的項目中。會讓程序陷入深度的邏輯混亂狀態。而問題被藏起來了,你甚至不知道哪里發生了問題。

2.如果真的遇到亂try、catch的程序員怎么辦?

vs很強大,它想到了這種情況。點擊【調試】【異?!窟M入這樣一個工具,選中第二行 的引發選項。

clipboard[4]

這樣在調試的時候,無論是否try  catch都會暴漏出異常。我們想要的信息就找到了。

 

 

.NET中的IO操作基礎介紹

關于IO簡介

.NET中的IO操作,經常需要調用一下幾個類。

clipboard[5]
 

1.FileStream類       

        文件流類,負責大文件的拷貝,讀寫。

2.Path類                  

        Path類中方法,基本都是對字符串(文件名)的操作,與實際文件沒多大關系。

3.File類           

      File類可以進行一些對小文件拷貝、剪切操作,還能讀一些文檔文件。

4.Dirctory            

      目錄操作,創建文件、刪除目錄,獲取目錄下文件名等等。

Path類

1.ChangeExtension(path,".jpg")

改變文件后綴名!

2.Combine(s1,s2)

將兩個路徑連起來

3.獲取文件名的幾個方法 

1)Path.GetFileName(s1);   //獲取路徑中的文件名

2)Path.GetFileNameWithoutExtension(s1);   //獲取文件名,不包括后綴名!

3)Path.GetDirectoryName(s1)//獲取路徑中的目錄不包括文件名。

4)Path.GetExtension(s1);  //只獲取擴展名

4.GetFullPath("")

獲取完整路徑,根據相對路徑獲得絕對路徑。

5.臨時目錄 

1)GetTempPath()     //獲取當前用戶的臨時目錄

2)GetTempFileName()    //獲取一個隨機的文件名,并在臨時目錄下創建這個文件。

3)GetRandomFileName()   //僅獲取一個隨機文件名。

Directory類

1.創建目錄

Directory.CreateDirectory(@"目錄");

2.判斷某個目錄是否存在某文件

string path =@"路徑";

if(Directory.Exists(path))

{

}

3.刪除目錄

1)Directory.Delete(path); //刪除空目錄  ,目錄下沒有文件了。

2)Directory.Delete(path,true); //不管空不空,都刪!

3)如果沒有目錄就會報異常,最好用if(Directory.Exists(path))判斷一下。

4.移動文件目錄

重命名目錄也用這個來做。

Directory.Move(@"c:/a",@"c:/abc");

5.DirectoryInfo

可以把文件夾當作對象來使用

DirectoryInfo dirInfo = new DirectoryInfo(@"path");

6.獲取當前目錄下的所有直接子目錄 和 直接子文件

//獲取目錄下的直接子目錄

String[] dirs =Direcotory.GetDirectories(@"目錄");

//獲取目錄下的直接子文件

String[] files =Directory.GetFiles(@"目錄");

7.獲取當前目錄下的目錄和文件  另一種方式

//獲取目錄下的直接子目錄

//String[] dirs =Direcotory.GetDirectories(@"目錄");

//獲取目錄下的直接子文件

//String[] files =Directory.GetFiles(@"目錄");

//—————————以上是6中的做法,他有一定性能上的問題。什么問題呢?—————————————

使用String[] dirs =Direcotory.GetDirectories(@"目錄");是必須要等獲取了整個string之后,才能遍歷這個集合。

如果希望,讀到一條處理一條。

建議使用Directory.EnumerateFile()

1)EnumerateFile返回的是一個實現了IEnumerable接口的集合。實際上使用了迭代器模式。

2)SearchOption.ALLDirctories參數,會讓.EnumerateFile()遍歷所有子目錄下的文件。

File類

1.拷貝

File.Copy("Source"," Target",true);

2.判斷是否存在 

File.Exists(@"Source") ;

3.剪切 

File.Move("Source","Targe");

4.創建 

File.Create("path");

5.刪除 

File.Delete("path"); //刪除,若沒有,不報錯!

6.讀操作 

1)File.ReadAllLines("path",Encoding.Default);   //返回一個string[]

2)File.ReadAllTest("path",Encoding.Default);    //string

3)File.ReadAllBytes("path");

7.寫操作 

1)File.WriteAllLines("path",new string[4],Encoding.Default);//按行寫入一個文件中。

2)File.WriteAllText("path","string");

3)File.WriteAllBytes("path",new byte[4]);

4)File.AppendAllText();   //將string追加到文件中。

8.返回FileStream的快捷方式 

1)File.Open(string,FileMode);   //返回一個FileStream

2)File.OpenRead(string,FileMode);  //返回一個只讀的 FileStream

3)File.OpenWrite(string,FileMode);  //返回一個只寫的 FileStream

 

 

.NET中的IO操作之文件流

讀操作

//1.創建文件流

FileStream fsRead =new FileStream("1.txt",FileMode.Open);

//2.創建緩沖區,正常情況下,是不會直接等于文件大小的。這里只有讀,所以就這么干了。

byte[] bytes =new byte[fsRead.Length];

//3.開始讀取, 返回值是讀取到的長度。

int r =fsRead.Read(bytes,0,bytes.Lenght);

//4.關閉釋放流

fsRead.Close();

fsRead.Dispose();

寫操作

//1.創建寫入的文件流

FileStream fsWrite fsWrite =new FileStream(@"xxx",FileMode.OpenOrCreate);

//2.創建緩沖區

String msg ="HelloWorld";

byte[] bytes =Enconding.UTF8.GetBytes(msg);

//3.開始寫入

fsWrite.Write(bytes,0,bytes.Length);

//4.關閉

fsWrite.Close();

fsWrite.Dispose();

byte數組與string之間的轉換

/*在文件流寫入的時候,經常需要string 和 byte數組之間的轉換。

   這里簡單的描述一下,這方面的做法。*/

1.string 到 byte[]數組。

string msg ="HelloWorld";

//使用UTF8編碼

byte[] bytes =System.Text.Encoding.UTF8.GetByte(msg);

//使用系統默認編碼

byte[] bytes =System.Text.Encoding.Default.GetByte(msg);

 

2.byte[]到string

string newMsg =System.Text.Encoding.UTF8.GetString(bytes);

編碼問題

為什么中文會亂碼?

UTF8 編碼中,一個中文字符占用兩個字節。

GBK  編碼中,一個中文字符占用三個字節。

UTF8 編碼中,用兩個字節保存一個漢字,如果你用GBK讀取,按照三個字節一個字的格式去讀。當然亂碼了。反之也是一樣的。

總結起來,無論是36碼的鞋子,穿在50碼的腳丫子上。還是36碼的腳丫子,穿50碼的鞋??雌饋矶疾粫苁娣?。

所以,按照什么格式寫入,就按照什么格式讀取。才是正解。

 

PS:1.Utf8是國際標準。

     2.GB2312  是國標編碼,支持中文的。

     3.GBK是對GB2312的擴展,支持繁體中文。

什么類可以Dispose( )?

1.Dispose()表示釋放資源,.NET中對Dispose()有一個統一的約定或者叫描述。這個約定表現為一個接口。

或者說這個接口,是一個紅頭文件,紅頭文件中約定了如何釋放資源。

所有實現了IDisposable接口的類都可以釋放,可以Dispose();

那么類庫中什么樣的類會實現IDisposable接口呢?

我的理解是這樣的,一般僅占用托管堆中內存資源的類或對象。一般不需要Dispose()。垃圾回收就搞定了。

但是對于,文件句柄,網絡端口號,數據庫連接等,CLR的垃圾回收機制是不管的。

所以一般這部分內容需要實現IDisposable接口。

文件流操作的異常處理

//只有把fs定義在這里,finally中才能引用得到。

FileStream fs =null;

try

{

     fs =new FileStream(@"文件路徑",FileMode.Create);

     byte[] bytes = Encoding.Default.GetBytes("HelloWorld");

     fs.Write(bytes,0,byte.Length);

}

finally

{

     if(fs != null)  //如果fs未賦值,那么直接Dispose就會引發空指針異常。

     {

         fs.Dispose();

     }

}


簡化上述的寫法,雖然嚴謹但是稍微有點麻煩。Microsoft提供了語法糖。
就是using的語法
using(某個可以釋放資源的類)
{
      操作
}
//1.操作執行完,會自動釋放。
//2.using語句編譯完成以后,會形成跟上面類似的代碼。就是使用try  finally。

StreamWriter和StreamReader

//按行寫入

StreamWriter sw =new StreamWriter(@"target",true,Encoding.GetEnconding("GB2312"));

sw.WriteLine("HelloWorld");

//按行讀取

StreamReader sr =new StreamReader(@"Source");

sr.ReaderLine();  //每次返回一個字符串

 

 

 

我在這里學的很開心!每天都會有一點收獲。感謝  如鵬網.NET訓練營Online

 

 


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
日韩在线视频观看| 欧美日韩一区免费| 97精品视频在线播放| 国产97色在线| 日韩美女在线播放| 日韩精品亚洲视频| 国产亚洲欧洲黄色| 91久久精品日日躁夜夜躁国产| 久久成人精品视频| 欧美激情视频在线| 亚洲成人国产精品| 夜夜狂射影院欧美极品| 久久久久久久久久久人体| 亚洲天堂第一页| 久久久久久久一| 国内外成人免费激情在线视频网站| 欧美性高潮床叫视频| 国产日韩综合一区二区性色av| 亚洲色图日韩av| 欧美在线观看日本一区| 国产精品视频免费观看www| 欧美激情乱人伦一区| 欧美最猛性xxxxx(亚洲精品)| 欧美成人免费全部观看天天性色| 91精品久久久久久久久不口人| 亚洲精品成人av| 亚洲第一av在线| 国产精品日韩在线播放| 欧美色道久久88综合亚洲精品| 欧美亚洲一区在线| 亚洲欧美变态国产另类| 国产美女高潮久久白浆| 国产精品日日摸夜夜添夜夜av| 亚洲国产91精品在线观看| 国产最新精品视频| 欧美激情伊人电影| 日韩专区在线观看| 亚洲深夜福利网站| 精品无人区乱码1区2区3区在线| 91久久在线播放| 国内精品一区二区三区| 国产精品久久二区| 久久亚洲精品中文字幕冲田杏梨| 日韩精品中文字幕视频在线| 欧美性视频精品| 欧美国产日韩精品| 亚洲国产精品女人久久久| 国产精品专区第二| 亚洲色图17p| 国产精品视频不卡| 亚洲国产精久久久久久| 欧美理论电影网| 中文字幕久久久| 中文字幕9999| 国产精品免费久久久久久| 亚洲福利视频网| 欧美大全免费观看电视剧大泉洋| 一区二区三区四区视频| 日韩电影大全免费观看2023年上| 97视频在线观看免费高清完整版在线观看| 久久精品亚洲94久久精品| 国产精品流白浆视频| 国产精品老女人视频| 亚洲跨种族黑人xxx| 7777免费精品视频| 亚洲免费视频网站| 亚洲变态欧美另类捆绑| 久久免费视频这里只有精品| 欧美精品做受xxx性少妇| 中文字幕亚洲无线码在线一区| 精品视频偷偷看在线观看| 欧美在线视频免费| 欧美日韩国产成人在线| 国产精品女主播视频| 欧美激情xxxx性bbbb| 成人网欧美在线视频| 国产精品美女主播| 中文字幕日韩在线观看| 欧美日韩在线视频首页| 中文字幕v亚洲ⅴv天堂| 性夜试看影院91社区| 欧美日韩视频在线| 国产成人久久久| 欧美多人爱爱视频网站| 亚洲视频在线免费观看| 九九九久久国产免费| 国产精品久久久久久久久久新婚| 日韩成人av网址| 久久精品小视频| 日本91av在线播放| 亚洲在线视频观看| 亚洲最大福利视频网| 日韩av在线最新| 久久影视电视剧凤归四时歌| 欧美电影免费看| 久久久久久久久爱| 久久成人18免费网站| 92裸体在线视频网站| 亚洲精品久久久久中文字幕欢迎你| 国产精品美女999| 久久不射电影网| 国产欧美 在线欧美| 国产亚洲美女精品久久久| 一本色道久久综合亚洲精品小说| 欧美日韩精品国产| 欧美一级高清免费播放| 日韩精品中文字幕久久臀| 午夜精品一区二区三区在线视频| 成人午夜黄色影院| 亚洲伊人久久大香线蕉av| 亚洲精品国产精品国自产在线| 亚洲欧洲日产国码av系列天堂| 黄网站色欧美视频| 亚洲电影免费观看| 久久6精品影院| 中文字幕亚洲综合久久筱田步美| 欧美亚洲国产日本| 精品国产鲁一鲁一区二区张丽| 91av在线播放视频| 久热精品视频在线观看一区| 国产免费一区二区三区在线能观看| 琪琪亚洲精品午夜在线| 欧美福利视频在线| 国产精品网站入口| 久久青草精品视频免费观看| 亚洲女性裸体视频| 中文字幕在线看视频国产欧美在线看完整| 国产精品手机播放| 国产欧美日韩中文字幕| 国产欧美日韩丝袜精品一区| 亚洲精品视频免费在线观看| 亚洲xxxxx| 亚洲色图综合久久| 亚洲天堂一区二区三区| 国产一区二区三区中文| 精品国产31久久久久久| 国产精品视频内| 青青青国产精品一区二区| 精品少妇v888av| 91影视免费在线观看| 亚洲bt欧美bt日本bt| 日韩电影中文字幕| 欧美肥老太性生活视频| 亚洲黄色成人网| 亚洲一区亚洲二区亚洲三区| 国产激情999| 国产精品91在线观看| 国产成人97精品免费看片| 久久偷看各类女兵18女厕嘘嘘| 亚洲欧美第一页| 亚洲精品电影久久久| 国外日韩电影在线观看| 欧美黑人国产人伦爽爽爽| 久久在线视频在线| 国产欧美日韩精品丝袜高跟鞋| 成人高清视频观看www| 亚洲欧美国产日韩天堂区| 成人黄色在线播放| 亚洲自拍偷拍第一页| 国产精品99久久99久久久二8| 九九精品视频在线观看| 欧美亚洲日本网站| 在线播放国产一区二区三区| 亚洲成色999久久网站|