麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁(yè) > 學(xué)院 > 開(kāi)發(fā)設(shè)計(jì) > 正文

.NET常用類庫(kù)知識(shí)總結(jié)

2019-11-14 16:15:32
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友
常用類庫(kù)之.NET中的字符串

字符串的特性

1.不可變性
       由于字符串是不可變的的,每次修改字符串,都是創(chuàng)建了一個(gè)單獨(dú)字符串副本(拷貝了一個(gè)字符串副本)。之所以發(fā)生改變只是因?yàn)橹赶蛄艘粔K新的地址。
 
2.字符串池(只針對(duì)字符串常量)
      當(dāng)一個(gè)程序中有多個(gè)相同的字符串常量時(shí),多個(gè)變量指向的是內(nèi)存中同一塊字符串!這個(gè)特性叫字符串池。之所以字符串,不會(huì)造成程序混亂,是因?yàn)樽址牟豢勺冃浴?/span>
 

String的成員方法和屬性

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

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

    用法

      string str ="helloworld";

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

2.StartsWith(String str)    

          判斷字符串對(duì)象是否以,指定字符串開(kāi)頭。

3.EndWith(String str)

         判斷字符串對(duì)象是否以,指定字符串結(jié)尾。

4.Length 屬性

         獲取字符串的長(zhǎng)度

5.IndexOf(String str) 

         獲取指定字符/字符串.....在對(duì)象字符串中第一次出現(xiàn)的位置。

6.LastIndexOf(String str)

         獲取指定字符/字符串....在對(duì)象字符串中最后一次 出現(xiàn)的位置。

7.SubString(int start)

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

8.ToLower()

        將串轉(zhuǎn)換成小寫,返回一個(gè)新的全小寫的字符串。

9.ToUpper()

       將串轉(zhuǎn)換成大寫,返回一個(gè)新的全大寫的字符串。

10. Replace(string oldStr,string newStr)

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

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

        TrimStart() 去掉對(duì)象字符串 開(kāi)頭的空格

        TrimEnd()  去掉對(duì)象字符串  結(jié)尾的空格

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

12.Split()     把對(duì)象字符串,按照指定字符分割成一個(gè)字符串?dāng)?shù)組!

     Split()    的重載同樣很多,

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

String的靜態(tài)方法

1.IsNullOrEmpty(string)

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

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

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

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

1. Interval 屬性表示 Timer控件的時(shí)間間隔。

    類型是int默認(rèn)是毫秒。

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

如果激活的話,一進(jìn)入Timer的Tick事件就開(kāi)始執(zhí)行。所以默認(rèn)是false

3. Start() 方法

    開(kāi)始執(zhí)行

4. Stop() 方法

    停止執(zhí)行

5. Tick  事件

    表示Timer控件將要執(zhí)行的代碼。

常規(guī)使用方式

1.添加一個(gè)Timer控件

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

使用Lambda表達(dá)式調(diào)用Timer

Timer timer = new Timer();

timer.Interval = 100;

//使用Lambda表達(dá)式

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

{

     if (巴拉巴拉巴拉)

        {                   

          timer.Stop();

        }

};

timer.Start();

 

.NET中的StringBuilder

為什么要使用StringBuilder

為什么使用StringBuilder要從string對(duì)象的特性說(shuō)起。

string對(duì)象在進(jìn)行字符串拼接時(shí),因?yàn)樽址牟豢勺冃裕瑂tring對(duì)象會(huì)每次拼接,都會(huì)復(fù)制一個(gè)副本出來(lái)進(jìn)行運(yùn)算,而本身的串仍然留在內(nèi)存中,大量的臨時(shí)片段會(huì)造成不可忽視的性能損耗。所以在進(jìn)行大量的字符串拼接時(shí)建議使用StringBuilder

 

StringBuilder的簡(jiǎn)單使用方式

string s1 = "33";

string s2 = "44";

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

//使用StringBuilder ,不會(huì)產(chǎn)生無(wú)用的臨時(shí)字符串。

StringBuilder sb =new StringBuilder();

//拼接方式一

sb.Append(s1);

sb.Append(s2);

sb.Append(s3);

//拼接方式二      

//因?yàn)锳ppend()方法會(huì)返回一個(gè)this,也就是對(duì)象本身。所以可以使用這種方式。

//鏈?zhǔn)骄幊?nbsp; Jquery中常用這種方式

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

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

PS:AppendLine()方法可以 自動(dòng)添加一個(gè)回車。

 
.NET 中的DateTime

DateTime簡(jiǎn)介

DateTime是.NET中的時(shí)間類型,可以通過(guò)DateTime完成諸如獲取當(dāng)前的系統(tǒng)時(shí)間等操作。
DateTime在.NET中是一個(gè)結(jié)構(gòu)體,而并不是一個(gè)類。
clipboard 

如上圖所示,clipboard[1]這個(gè)圖標(biāo)在VS中 表示結(jié)構(gòu)體。

DateTime的常用方法和成員

1.Now
獲取當(dāng)前系統(tǒng)時(shí)間。格式如下圖

clipboard[2]    

2.Today
獲取當(dāng)前今日日期。格式如下圖

clipboard[3]

3.年 月 日 時(shí) 分 秒
接下來(lái)的幾個(gè)對(duì)象,必須通過(guò)
DateTime.Now(或者DateTime.Today)再點(diǎn)才能引用的到。
  Year      獲取年       Hour      獲取小時(shí)
  Month  獲取月       Minute  獲取分鐘
  Day      獲取日        Second  獲取秒

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

4.DayOfWeek、DayOfYear
獲取當(dāng)前日期是星期幾  

以及獲取當(dāng)前日期是一年中的第幾天

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

6.AddDays()、AddHours() 

在當(dāng)前時(shí)間基礎(chǔ)上加幾天  返回一個(gè)DateTime
在當(dāng)前日期基礎(chǔ)上加幾個(gè)小時(shí)  返回一個(gè)DateTime
7.Subtract(DateTime.Now)

比較兩個(gè)時(shí)間的 時(shí)間差   返回一個(gè)TimeSpan

日期時(shí)間格式字符 ToString()

預(yù)定義模式
DateTime date =DateTime.Now;
date.ToString(
format
  參數(shù)
format格式詳細(xì)用法
格式字符 關(guān)聯(lián)屬性/說(shuō)明
d ShortDatePattern
D LongDatePattern
f 完整日期和時(shí)間(長(zhǎng)日期和短時(shí)間)
F FullDateTimePattern(長(zhǎng)日期和長(zhǎng)時(shí)間)
g 常規(guī)(短日期和短時(shí)間)
G 常規(guī)(短日期和長(zhǎng)時(shí)間)
m、M MonthDayPattern
r、R RFC1123Pattern
s 使用當(dāng)?shù)貢r(shí)間的 SortableDateTimePattern(基于 ISO 8601)
t ShortTimePattern
T LongTimePattern
u UniversalSortableDateTimePattern 用于顯示通用時(shí)間的格式
U 使用通用時(shí)間的完整日期和時(shí)間(長(zhǎng)日期和長(zhǎng)時(shí)間)

y、Y YearMonthPattern

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

 

.NET中的異常和異常處理

.NET中的異常(Exception)

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

可以通過(guò)編寫一個(gè)繼承自Exception的類的方式,自定義異常類!

異常處理機(jī)制

Try

{

    可能發(fā)生異常的代碼

    后續(xù)代碼     

}

Try以外的代碼

catch(Exception e)

{

}

finally

{

}

上述代碼描述如下

1.誰(shuí)能執(zhí)行 在異常處理中,一旦try里面有了問(wèn)題,程序會(huì)放棄異常的后續(xù)代碼直接跳到catch中。

執(zhí)行完了catch中的代碼,繼續(xù)執(zhí)行Try以外的代碼

2.關(guān)于catch()中的參數(shù)e

e就是發(fā)生異常的異常類對(duì)象,可以任意取名。不是必須叫e的。

3.只拋一個(gè)

一塊try中的代碼只能拋出一個(gè)異常。

為什么呢?

因?yàn)橐坏┊惓>蛼伋隽税。竺嬗幸膊粓?zhí)行了呀!

4.獲取信息

可以通過(guò) e.Message獲取異常信息

5.必須執(zhí)行

finally  無(wú)論如何都會(huì)執(zhí)行

6.可以沒(méi)有catch

可以只有 try catch

也可以只有try  finally

優(yōu)秀的異常處理作風(fēng)

1.不要逃避問(wèn)題不要只把異常catch住,什么都不做,或者只是打印一下,這不是優(yōu)秀的“異常處理”作風(fēng)。

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

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

vs很強(qiáng)大,它想到了這種情況。點(diǎn)擊【調(diào)試】【異常】進(jìn)入這樣一個(gè)工具,選中第二行 的引發(fā)選項(xiàng)。

clipboard[4]

這樣在調(diào)試的時(shí)候,無(wú)論是否try  catch都會(huì)暴漏出異常。我們想要的信息就找到了。

 

 

.NET中的IO操作基礎(chǔ)介紹

關(guān)于IO簡(jiǎn)介

.NET中的IO操作,經(jīng)常需要調(diào)用一下幾個(gè)類。

clipboard[5]
 

1.FileStream類       

        文件流類,負(fù)責(zé)大文件的拷貝,讀寫。

2.Path類                  

        Path類中方法,基本都是對(duì)字符串(文件名)的操作,與實(shí)際文件沒(méi)多大關(guān)系。

3.File類           

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

4.Dirctory            

      目錄操作,創(chuàng)建文件、刪除目錄,獲取目錄下文件名等等。

Path類

1.ChangeExtension(path,".jpg")

改變文件后綴名!

2.Combine(s1,s2)

將兩個(gè)路徑連起來(lái)

3.獲取文件名的幾個(gè)方法 

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

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

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

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

4.GetFullPath("")

獲取完整路徑,根據(jù)相對(duì)路徑獲得絕對(duì)路徑。

5.臨時(shí)目錄 

1)GetTempPath()     //獲取當(dāng)前用戶的臨時(shí)目錄

2)GetTempFileName()    //獲取一個(gè)隨機(jī)的文件名,并在臨時(shí)目錄下創(chuàng)建這個(gè)文件。

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

Directory類

1.創(chuàng)建目錄

Directory.CreateDirectory(@"目錄");

2.判斷某個(gè)目錄是否存在某文件

string path =@"路徑";

if(Directory.Exists(path))

{

}

3.刪除目錄

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

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

3)如果沒(méi)有目錄就會(huì)報(bào)異常,最好用if(Directory.Exists(path))判斷一下。

4.移動(dòng)文件目錄

重命名目錄也用這個(gè)來(lái)做。

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

5.DirectoryInfo

可以把文件夾當(dāng)作對(duì)象來(lái)使用

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

6.獲取當(dāng)前目錄下的所有直接子目錄 和 直接子文件

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

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

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

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

7.獲取當(dāng)前目錄下的目錄和文件  另一種方式

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

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

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

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

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

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

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

建議使用Directory.EnumerateFile()

1)EnumerateFile返回的是一個(gè)實(shí)現(xiàn)了IEnumerable接口的集合。實(shí)際上使用了迭代器模式。

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

File類

1.拷貝

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

2.判斷是否存在 

File.Exists(@"Source") ;

3.剪切 

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

4.創(chuàng)建 

File.Create("path");

5.刪除 

File.Delete("path"); //刪除,若沒(méi)有,不報(bào)錯(cuò)!

6.讀操作 

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

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

3)File.ReadAllBytes("path");

7.寫操作 

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

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

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

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

8.返回FileStream的快捷方式 

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

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

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

 

 

.NET中的IO操作之文件流

讀操作

//1.創(chuàng)建文件流

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

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

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

//3.開(kāi)始讀取, 返回值是讀取到的長(zhǎng)度。

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

//4.關(guān)閉釋放流

fsRead.Close();

fsRead.Dispose();

寫操作

//1.創(chuàng)建寫入的文件流

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

//2.創(chuàng)建緩沖區(qū)

String msg ="HelloWorld";

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

//3.開(kāi)始寫入

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

//4.關(guān)閉

fsWrite.Close();

fsWrite.Dispose();

byte數(shù)組與string之間的轉(zhuǎn)換

/*在文件流寫入的時(shí)候,經(jīng)常需要string 和 byte數(shù)組之間的轉(zhuǎn)換。

   這里簡(jiǎn)單的描述一下,這方面的做法。*/

1.string 到 byte[]數(shù)組。

string msg ="HelloWorld";

//使用UTF8編碼

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

//使用系統(tǒng)默認(rèn)編碼

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

 

2.byte[]到string

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

編碼問(wèn)題

為什么中文會(huì)亂碼?

UTF8 編碼中,一個(gè)中文字符占用兩個(gè)字節(jié)。

GBK  編碼中,一個(gè)中文字符占用三個(gè)字節(jié)。

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

總結(jié)起來(lái),無(wú)論是36碼的鞋子,穿在50碼的腳丫子上。還是36碼的腳丫子,穿50碼的鞋。看起來(lái)都不會(huì)很舒服。

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

 

PS:1.Utf8是國(guó)際標(biāo)準(zhǔn)。

     2.GB2312  是國(guó)標(biāo)編碼,支持中文的。

     3.GBK是對(duì)GB2312的擴(kuò)展,支持繁體中文。

什么類可以Dispose( )?

1.Dispose()表示釋放資源,.NET中對(duì)Dispose()有一個(gè)統(tǒng)一的約定或者叫描述。這個(gè)約定表現(xiàn)為一個(gè)接口。

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

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

那么類庫(kù)中什么樣的類會(huì)實(shí)現(xiàn)IDisposable接口呢?

我的理解是這樣的,一般僅占用托管堆中內(nèi)存資源的類或?qū)ο蟆R话悴恍枰狣ispose()。垃圾回收就搞定了。

但是對(duì)于,文件句柄,網(wǎng)絡(luò)端口號(hào),數(shù)據(jù)庫(kù)連接等,CLR的垃圾回收機(jī)制是不管的。

所以一般這部分內(nèi)容需要實(shí)現(xiàn)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就會(huì)引發(fā)空指針異常。

     {

         fs.Dispose();

     }

}


簡(jiǎn)化上述的寫法,雖然嚴(yán)謹(jǐn)?shù)巧晕⒂悬c(diǎn)麻煩。Microsoft提供了語(yǔ)法糖。
就是using的語(yǔ)法
using(某個(gè)可以釋放資源的類)
{
      操作
}
//1.操作執(zhí)行完,會(huì)自動(dòng)釋放。
//2.using語(yǔ)句編譯完成以后,會(huì)形成跟上面類似的代碼。就是使用try  finally。

StreamWriter和StreamReader

//按行寫入

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

sw.WriteLine("HelloWorld");

//按行讀取

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

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

 

 

 

我在這里學(xué)的很開(kāi)心!每天都會(huì)有一點(diǎn)收獲。感謝  如鵬網(wǎng).NET訓(xùn)練營(yíng)Online

 

 


發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 久久国产精品二国产精品中国洋人 | 亚洲最新色 | 黄色伊人网站 | 成人福利视频在线 | 欧美一级高潮片免费的 | 久久丝袜脚交足黄网站免费 | 双性精h调教灌尿打屁股的文案 | 中文字幕在线观看免费视频 | sm高h视频| 亚洲第一视频在线 | 欧美日韩在线免费观看 | 成人免费av在线播放 | 爽爽视频免费看 | 久久99久久98精品免观看软件 | 亚洲福利视频52 | 国产色视频在线观看免费 | 免费观看高清视频网站 | 久久999精品久久久 国产噜噜噜噜久久久久久久久 | 亚洲综合91| 色成人在线 | 日本最新免费二区三区 | 日韩激情在线视频 | 91成人免费看片 | 欧美一级不卡视频 | av黄色片网站 | 福利免费观看 | 国产做爰全免费的视频黑人 | 福利在线免费视频 | 国产精品久久久久久久久久久天堂 | 狠狠干天天操 | 99精彩视频在线观看 | 男人的天堂视频网站 | 天天干天天透 | 一区二区三区在线观看免费视频 | 国产成人高清成人av片在线看 | 特黄一区二区三区 | 国产精品成人一区 | 麻豆视频在线免费观看 | 九九热九九 | 姑娘第四集免费看视频 | 欧美亚洲国产一区二区三区 |