




版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
編程環(huán)境和平臺(tái)確定以后,編程工具就是提高軟件質(zhì)量和生產(chǎn)效率的重要因素,組合編程首先需要考慮的是使用什么語(yǔ)言、什么數(shù)據(jù)庫(kù)和編程工具。
C#(Sharp)語(yǔ)言是一門(mén)完全面向?qū)ο?、面向網(wǎng)絡(luò)、類(lèi)型安全、平臺(tái)獨(dú)立的一門(mén)新型組件編程語(yǔ)言。其語(yǔ)法風(fēng)格源自C/C++家族、融合了VB(VisualBasic)、吸收了Java的許多優(yōu)點(diǎn),是微軟為奠定下一互聯(lián)網(wǎng)霸主地位而打造的Microsoft.Net平臺(tái)的主流語(yǔ)言。其強(qiáng)大的操作能力、優(yōu)雅的語(yǔ)法風(fēng)格、創(chuàng)新的語(yǔ)言特性、一流的面向組件編程支持而深受世界各地程序員的好評(píng)和喜愛(ài)。第2章組合編程工具介紹
它是我們多年從事計(jì)算機(jī)語(yǔ)言教學(xué)和研究以來(lái)所使用的最完美的語(yǔ)言。C#語(yǔ)言目前已由微軟提交歐洲計(jì)算機(jī)制造商協(xié)會(huì)ECMA,經(jīng)過(guò)標(biāo)準(zhǔn)化后的C#將可以由任何廠商在任何平臺(tái)上實(shí)現(xiàn)其開(kāi)發(fā)工具及其支持軟件,這為C#的發(fā)展提供了強(qiáng)大的驅(qū)動(dòng)力和光明的前景。 組件編程已經(jīng)成為當(dāng)今世界軟件業(yè)面向下一代程序開(kāi)發(fā)的一致選擇,是90年代面向?qū)ο缶幊痰纳疃劝l(fā)展。C#的誕生,順應(yīng)現(xiàn)代潮流,占盡天時(shí)地利人和,在Microsoft.Net平臺(tái)的支持下,與WINDOWS操作系統(tǒng)無(wú)縫連接,使其面向?qū)ο?、組件特性和網(wǎng)絡(luò)編程已經(jīng)深深植入它的各個(gè)層面,這正是我們采用C#作為組合編程語(yǔ)言的原因。
SQLServer2000是Microsoft公司推出的SQLServer數(shù)據(jù)庫(kù)管理系統(tǒng),該版本繼承了SQLServer7.0版本的優(yōu)點(diǎn),同時(shí)它增加了許多更先進(jìn)的功能。具有使用方便可伸縮性好與相關(guān)軟件集成程度高等優(yōu)點(diǎn),可跨越從運(yùn)行MicrosoftWindows98到MicrosoftWin7的大型多處理器的服務(wù)器等多種平臺(tái)使用。現(xiàn)在已經(jīng)有了SQLServer2005和SQLServer2008,它是.NET環(huán)境下與windows無(wú)縫連接的最好使用的數(shù)據(jù)庫(kù)系統(tǒng)。也是我們研究組合編程技術(shù)最好的數(shù)據(jù)支持。MicrosoftSQLServer2012是最新版本。2.1組合編程語(yǔ)言介紹2.1.1C#程序架構(gòu) 本節(jié)給出C#的通用程序架構(gòu),目的是想讓讀者一開(kāi)始對(duì)它有一個(gè)整體的認(rèn)識(shí),同時(shí)也給出它的一個(gè)最簡(jiǎn)單的特例,它是我們歡迎讀者的最簡(jiǎn)單的C#程序。1最簡(jiǎn)單的C#程序
C#語(yǔ)言雖然是一門(mén)完全面向?qū)ο蠛途W(wǎng)絡(luò)的一門(mén)新型組件編程語(yǔ)言。但是它的簡(jiǎn)要結(jié)構(gòu)卻非常簡(jiǎn)單。下面是歡迎讀者的最簡(jiǎn)單的C#程序(簡(jiǎn)稱(chēng)歡迎程序)。讀者可以從所買(mǎi)光盤(pán)復(fù)制到自己的磁盤(pán)中,然后編譯和運(yùn)行。/*歡迎程序.cs是歡迎讀者的最簡(jiǎn)單的C#程序。*作者李先國(guó)*2008.8.1**///使用命令:csc歡迎程序.cs
編譯該程序,//然后輸入:歡迎程序.exe
即可運(yùn)行。usingSystem;class歡迎{publicstaticvoidMain(){Console.WriteLine("讀者您好!歡迎您使用C#。");}}
假設(shè)您已經(jīng)安裝了MicrosoftVisualStudio2008及其工具,并將光盤(pán)中的例子程序復(fù)制到了D盤(pán)的C#文件夾中。編譯和運(yùn)行便可以按如下步驟進(jìn)行:鼠標(biāo)點(diǎn)擊:開(kāi)始/所有程序/MicrosoftVisualStudio2008/VisualStudioTools/VisualStudio2008命令提示。在命令行輸入:D:在命令行輸入:cdC#在命令行輸入:csc歡迎程序.cs在命令行輸入:歡迎程序.exe歡迎程序運(yùn)行結(jié)束,屏幕上顯示“讀者您好!歡迎您使用C#。”。
C#語(yǔ)言沒(méi)有自己的語(yǔ)言類(lèi)庫(kù),它直接獲取Microsoft.NET系統(tǒng)類(lèi)庫(kù)。Microsoft.NET類(lèi)庫(kù)為我們的編程提供了非常強(qiáng)大的通用功能。當(dāng)然using指示符并不是必須的,我們可以用類(lèi)型的全局名字來(lái)獲取類(lèi)型。實(shí)際上,using語(yǔ)句采用與否根本不會(huì)對(duì)C#編譯輸出的程序有任何影響,它僅僅是簡(jiǎn)化了較長(zhǎng)的命名空間的類(lèi)型引用方式?!癱lass歡迎”聲明了C#的一個(gè)類(lèi),類(lèi)名為“歡迎”,由于C#語(yǔ)言使用的是Unicode碼,所以它的名字,變量,字符和字符串都允許用漢字、日語(yǔ)等多國(guó)語(yǔ)言字符集。 Main()方法在C#里非常特殊,它是編譯器規(guī)定的所有可執(zhí)行程序的入口點(diǎn)。由于其特殊性,對(duì)Main()方法有以下幾條準(zhǔn)則:
1)Main()方法必須封裝在類(lèi)或結(jié)構(gòu)里來(lái)提供可執(zhí)行程序的入口點(diǎn)。C#采用了完全面向?qū)ο蟮木幊谭绞?,C#中不可以有像C++那樣的全局函數(shù),而必須要有一個(gè)類(lèi)或結(jié)構(gòu)聲明。
2)Main()方法必須為靜態(tài)方法(static)。這允許C#不必創(chuàng)建實(shí)例對(duì)象即可運(yùn)行程序。
3)Main()方法修飾符沒(méi)有特殊要求。public,protected,internal,private均可,但一般我們都指定為public。
4)Main()方法名的第一個(gè)字母要大寫(xiě),否則將不具有入口點(diǎn)的語(yǔ)義。C#是大小寫(xiě)敏感的語(yǔ)言。 5)Main()方法的參數(shù)只有兩種參數(shù)形式:無(wú)參數(shù)和“string數(shù)組”表示的命令行參數(shù),即staticvoidMain()或staticvoidMain(string[]args),后者接受命令行參數(shù)。在命令行參數(shù)中,參數(shù)之間用空格隔開(kāi),args[0]表示第1個(gè)參數(shù),args[1]表示第2個(gè)參數(shù),args[n]表示第n+1個(gè)參數(shù)。請(qǐng)注意,C#參數(shù)數(shù)組不像C/C++,該數(shù)組不包含正在運(yùn)行的執(zhí)行文件名。一個(gè)C#程序中只能有一個(gè)Main()方法入口點(diǎn)。其他形式的參數(shù)不具有入口點(diǎn)語(yǔ)義,C#不推薦通過(guò)其他參數(shù)形式重載Main()方法,這會(huì)引起編譯警告。
6)Main()方法返回值只能為void(無(wú)返回值)或int(整數(shù)返回值)。其他形式的返回值不具有入口點(diǎn)語(yǔ)義。//用命令:csc結(jié)構(gòu).cs 編譯該程序//然后輸入:結(jié)構(gòu).exe123 運(yùn)行usingSystem;struct結(jié)構(gòu){publicstaticvoidMain(string[]args){Console.WriteLine("參數(shù)={0};參數(shù)={1};參數(shù)={2}。",args[0],args[1],args[2]);}}運(yùn)行結(jié)果為:參數(shù)1=1;參數(shù)2=2;參數(shù)3=3。
由CSC編譯輸出的“歡迎程序.exe”是一個(gè)由中間語(yǔ)言(IL),元數(shù)據(jù)(Metadata)和一個(gè)額外的被編譯器添加的目標(biāo)平臺(tái)的標(biāo)準(zhǔn)可執(zhí)行文件頭組成的PE(portableexecutable,可移植執(zhí)行體)文件,雖然他們的擴(kuò)展名是.exe,而不是傳統(tǒng)的二進(jìn)制可執(zhí)行文件。它可以被即時(shí)編譯器Jitter翻譯成目標(biāo)平臺(tái)的本地代碼。中間語(yǔ)言代碼使得所有Microsoft.NET平臺(tái)的高級(jí)語(yǔ)言C#,VB.NET,VC.NET等得以平臺(tái)獨(dú)立,以及語(yǔ)言之間實(shí)現(xiàn)互操作。元數(shù)據(jù)是一個(gè)內(nèi)嵌于PE文件的表的集合。元數(shù)據(jù)描述了代碼中的數(shù)據(jù)類(lèi)型等一些公共語(yǔ)言運(yùn)行時(shí)(CLR)需要在代碼執(zhí)行時(shí)知道的信息。元數(shù)據(jù)使得.NET應(yīng)用程序代碼具備自描述特性,提供了類(lèi)型安全保障,這在以前需要額外的類(lèi)型庫(kù)或接口定義語(yǔ)言(InterfaceDefinitionLanguage,簡(jiǎn)稱(chēng)IDL)。
2C#程序的通用架構(gòu)C#程序的通用架構(gòu)可由一個(gè)或多個(gè)文件組成。每個(gè)文件又可以包含零個(gè)多個(gè)的命名空間。一個(gè)命名空間可以包含類(lèi)、結(jié)構(gòu)、接口、枚舉、委托等類(lèi)型。除此以外,它還可以包含其他命名空間。以下是C#程序的通用架構(gòu)。/*C#程序的通用架構(gòu).cs是描述C#程序結(jié)構(gòu)的C#程序。*作者李先國(guó)*2008.8.1**///用cscC#程序的通用架構(gòu).cs編譯該程序,//然后輸入:C#程序的通用架構(gòu).exe即可運(yùn)行usingSystem;namespace您的名字空間Namespace{class您的類(lèi)Class{}struct您的結(jié)構(gòu)Struct{}interface您的的接口Interface{}delegateint您的委托Delegate();enum您的枚舉Enum{}namespace您的嵌套名字空間Namespace{class您的類(lèi)Class{}struct您的結(jié)構(gòu)Struct{}}
class您的主程序類(lèi)Class{staticvoidMain(string[]args){//您的程序開(kāi)始執(zhí)行點(diǎn)
Console.WriteLine("C#程序的通用架構(gòu)=您的主程序類(lèi)Class+
您的Main()方法;");Console.WriteLine("或者您的名字空間Namespace+您的主程序類(lèi)Class+
您的Main()方法;");Console.WriteLine("或者您的名字空間Namespace+{您的類(lèi)Class|您的結(jié)構(gòu)Struct|...|
您的嵌套名字空間Namespace}+您的主程序類(lèi)Class+
您的Main()方法;");}}}運(yùn)行以上程序,輸出結(jié)果為:C#程序的通用架構(gòu)=您的主程序類(lèi)Class+您的Main()方法;或者您的名字空間Namespace+您的主程序類(lèi)Class+您的Main()方法;或者您的名字空間Namespace+{您的類(lèi)Class|您的結(jié)構(gòu)Struct|...|您的嵌套名字空間Namespace}+您的主程序類(lèi)Class+您的Main()方法;由此可見(jiàn)C#的一個(gè)最簡(jiǎn)單的程序就“您的主程序類(lèi)Class+您的Main()方法”,其他部分都是可以任選的。
3C#語(yǔ)言基礎(chǔ)介紹
由于C#基本語(yǔ)言很多源自C++,在這里對(duì)那些和C++類(lèi)似的地方僅作簡(jiǎn)單介紹,專(zhuān)注于那些區(qū)別于傳統(tǒng)C++的關(guān)鍵的語(yǔ)言基礎(chǔ)知識(shí)。構(gòu)成C#的基本字符和標(biāo)識(shí)符如下:1)Unicode字符集 在Unicode字符集中,每個(gè)字符由兩個(gè)字節(jié)(16位二進(jìn)制編碼)組成,范圍從0到65535之間。它們所表示的內(nèi)容是大小寫(xiě)英文字母、漢字、世界各國(guó)文字、數(shù)字、和各種符號(hào)。 如果要想看Unicode字符集的每一個(gè)字符和編碼,請(qǐng)運(yùn)行我們的兩個(gè)程序Unicode.cs和UnicodeFile.cs,看后您一定會(huì)非常滿(mǎn)意。如何使用這兩個(gè)程序,請(qǐng)參見(jiàn)程序的注釋部分。
2)標(biāo)識(shí)符標(biāo)識(shí)符就是用來(lái)唯一標(biāo)識(shí)某種內(nèi)容的符號(hào)。這些符號(hào)可以由語(yǔ)言文字、字母、下畫(huà)線和數(shù)字等組成。標(biāo)識(shí)符可以分為兩類(lèi):系統(tǒng)標(biāo)識(shí)符和用戶(hù)自定義標(biāo)識(shí)符。a.系統(tǒng)標(biāo)識(shí)符或稱(chēng)關(guān)鍵字。它們是C#語(yǔ)言的保留字,是系統(tǒng)具有專(zhuān)門(mén)用途的名字,是不能作為用戶(hù)自定義標(biāo)識(shí)符的。表2.1列出了C#的全部關(guān)鍵字。abstract
event
new
struct
as
explicit
null
switch
base
extern
object
this
bool
false
operator
throw
break
finally
out
true
byte
fixed
override
try
case
float
params
typeof
catch
for
private
uint
char
foreach
protected
ulong
checked
goto
public
unchecked
class
if
readonly
unsafe
const
implicit
ref
ushort
continue
in
return
using
decimal
int
sbyte
virtual
default
interface
sealed
volatile
delegate
internal
short
void
do
is
sizeof
while
double
lock
stackalloc
else
long
static
enum
namespace
string
b.用戶(hù)自定義標(biāo)識(shí)符。顧名思義就是用戶(hù)自己定義的標(biāo)識(shí)符。它們可以用來(lái)表示用戶(hù)自定義的變量、常數(shù)、類(lèi)型、字段和方法等。可以由語(yǔ)言文字、字母、下畫(huà)線和數(shù)字等組成。但是第一個(gè)字符一定是以語(yǔ)言文字、字母或下畫(huà)線打頭。例如,下面都是正確的自定義標(biāo)識(shí)符。A1,變量x,標(biāo)識(shí)符_1,_X,Я俄語(yǔ),ぁ日語(yǔ)。 如果用戶(hù)實(shí)在需要關(guān)鍵字作為自定義標(biāo)識(shí)符,可以給它們加一個(gè)@前綴。例如,@struct便是有效的自定義標(biāo)識(shí)符。在C#中還有一種叫上下文關(guān)鍵字,用于提供代碼中的特定含義,但它不是C#中的保留字。某些上下文關(guān)鍵字(如partial
和where)在兩個(gè)或更多個(gè)上下文中具有特殊含義。表2.2列出了C#上下文關(guān)鍵字。
from
get
group
into
join
let
orderby
partial(類(lèi)型)
partial(方法)
select
set
value
where(泛型類(lèi)型約束)
where(查詢(xún)子句)
yield
(2)數(shù)據(jù)類(lèi)型C#語(yǔ)言的數(shù)據(jù)類(lèi)型主要分為兩類(lèi):值類(lèi)型和引用類(lèi)型。值類(lèi)型的變量中存放他們的數(shù)據(jù),而引用類(lèi)型的變量中存放的是內(nèi)存塊的地址。從表2.3和圖2.1可以清晰地看出兩者的差別。引用類(lèi)型帶來(lái)的可能問(wèn)題是當(dāng)多個(gè)變量引用同樣的內(nèi)存塊時(shí),對(duì)任何一個(gè)變量引用內(nèi)容的修改都會(huì)導(dǎo)致該對(duì)象的值的改變。當(dāng)引用類(lèi)型變量的值為null值時(shí),表示引用類(lèi)型沒(méi)有對(duì)任何實(shí)際地址進(jìn)行引用。
數(shù)據(jù)類(lèi)型描述值類(lèi)型簡(jiǎn)單類(lèi)型整數(shù):sbyte,short,int,long無(wú)符號(hào)整數(shù):byte,ushort,uint,ulongUnicode字符:char浮點(diǎn):float,double高精度數(shù):decimal布爾數(shù):bool枚舉類(lèi)型用戶(hù)定義類(lèi)型:enumE{...}結(jié)構(gòu)類(lèi)型用戶(hù)定義類(lèi)型:structS{...}空類(lèi)型無(wú)值類(lèi)型:null
引用類(lèi)型Class類(lèi)型所有其它類(lèi)型的基類(lèi)型:objectUnicode字符串:string用戶(hù)自定義類(lèi)型:class
C
{...}Interface類(lèi)型用戶(hù)自定義接口類(lèi)型:interfaceI{...}Array類(lèi)型單維數(shù)組類(lèi)型:int[]多維數(shù)組類(lèi)型:int[,]Delegate類(lèi)型用戶(hù)自定義委托:delegateintD(...)
值類(lèi)型可分為簡(jiǎn)單類(lèi)型、結(jié)構(gòu)類(lèi)型、枚舉類(lèi)型和空類(lèi)型。簡(jiǎn)單類(lèi)型又可分為布爾類(lèi)型、字符類(lèi)型和數(shù)值類(lèi)型。C#語(yǔ)言中布爾類(lèi)型嚴(yán)格與數(shù)值類(lèi)型區(qū)分,只有true和false兩種取值,不存在像C/C++里那樣和其他類(lèi)型之間的轉(zhuǎn)換。數(shù)值類(lèi)型包括整型,浮點(diǎn)型和decimal型三種。整型有sbyte,byte,short,ushort,int,uint,long,ulong共8種。它們分別為有符號(hào)和無(wú)符號(hào)兩種。浮點(diǎn)有float和double兩種。decimal主要用于金融,貨幣等對(duì)精度要求比較高的計(jì)算環(huán)境。字符類(lèi)型就是用char來(lái)描述的數(shù)據(jù)類(lèi)型,其值是Unicode字符集中的字符或編碼,也可以把它們當(dāng)著整數(shù)來(lái)使用。表2.4描述了數(shù)值類(lèi)型的二進(jìn)制位數(shù)和范圍與精度。intintNumberintNumber:12345stringstrLiteralstrLiteral:這是一個(gè)字符串
圖2.1值類(lèi)型和引用類(lèi)型的差異
數(shù)據(jù)類(lèi)型二進(jìn)位數(shù)類(lèi)型范圍與精度整數(shù)8sbyte–128...12716short–32,768...32,76732int–2,147,483,648...2,147,483,64764long–9,223,372,036,854,775,808...9,223,372,036,854,775,807無(wú)符號(hào)整數(shù)8byte0...25516ushort0...65,53532uint0...4,294,967,29564ulong0...18,446,744,073,709,551,615浮點(diǎn)32float1.5
×
10?45to3.4
×
1038,7位精度64double5.0
×
10?324to1.7
×
10308,15位精度高精度數(shù)128decimal1.0
×
10?28to7.9
×
1028,28位精度
簡(jiǎn)單類(lèi)型.cs源代碼 簡(jiǎn)單類(lèi)型.cs是C#的簡(jiǎn)單類(lèi)型的詳細(xì)描述舉例。該例子包含了所有簡(jiǎn)單類(lèi)型的許多信息,例如,類(lèi)型的關(guān)鍵字,所占的二進(jìn)制位數(shù),最大值,最小值和精度。對(duì)Unicode編碼、漢字以及用漢字聲明變量也有描述。Object和string類(lèi)型雖然不屬于值類(lèi)型,但它們是系統(tǒng)最簡(jiǎn)單的引用類(lèi)型,在此也進(jìn)行了描述。 希望在機(jī)器上編譯和運(yùn)行簡(jiǎn)單類(lèi)型.cs程序并觀察結(jié)果。
引用類(lèi)型共分四種類(lèi)型:類(lèi),接口,數(shù)組和委托。除了我們可以定義自己的類(lèi)型外,還有兩個(gè)比較特殊的類(lèi)型object和string。object是C#中所有類(lèi)型的根類(lèi)。string類(lèi)型是一個(gè)密封類(lèi)型(不能被繼承),其實(shí)例為Unicode字符串,它和數(shù)組類(lèi)型將在以后詳述。接口類(lèi)型定義一個(gè)方法的合同,將在第3章中講述。委托類(lèi)型是一個(gè)指向靜態(tài)或?qū)嵗椒ǖ暮灻?lèi)似于C/C++中的函數(shù)指針,將在第3章中講述。 每種數(shù)據(jù)類(lèi)型都有對(duì)應(yīng)的缺省值。數(shù)值類(lèi)型的缺省值為0或0.0,其中字符類(lèi)型的缺省值為'\x0000'表示空字符,如果用它參加算術(shù)運(yùn)算,則是無(wú)符號(hào)的短整數(shù)0。布爾類(lèi)型的缺省值為false。枚舉類(lèi)型的缺省值為0。結(jié)構(gòu)類(lèi)型的缺省值是將它所有的值類(lèi)型的字段設(shè)置為對(duì)應(yīng)值類(lèi)型的缺省值,將其引用類(lèi)型的字段設(shè)置為null。所有引用類(lèi)型的缺省值為null。不同類(lèi)型的數(shù)據(jù)之間可以轉(zhuǎn)換,C#的類(lèi)型轉(zhuǎn)換有隱式轉(zhuǎn)換,顯示轉(zhuǎn)換和自定義轉(zhuǎn)換3種方式。隱式轉(zhuǎn)換與顯示轉(zhuǎn)換和C++里一樣,數(shù)據(jù)從“小類(lèi)型”到“大類(lèi)型”的轉(zhuǎn)換時(shí)為隱式轉(zhuǎn)換,從“大類(lèi)型”到“小類(lèi)型”的轉(zhuǎn)換為顯示轉(zhuǎn)換,顯示轉(zhuǎn)換需要給類(lèi)型加括號(hào),如,intintNumber=(int)floatNumber,表示把floatNumber這個(gè)浮點(diǎn)數(shù)顯示轉(zhuǎn)換為整數(shù)。用戶(hù)定義轉(zhuǎn)換是對(duì)類(lèi)或結(jié)構(gòu)這樣的自定義類(lèi)型而言的,將在第3章中介紹。表2.3展示了簡(jiǎn)單數(shù)據(jù)類(lèi)型的顯示轉(zhuǎn)換規(guī)則。對(duì)于不能直接進(jìn)行隱式轉(zhuǎn)換和顯示轉(zhuǎn)換的數(shù)據(jù)就必須用戶(hù)自己定義轉(zhuǎn)換。待轉(zhuǎn)換的類(lèi)型可以轉(zhuǎn)換成為的類(lèi)型sbyteByte,ushort,uint,ulong,charbyteSbyte,charshortSbyte,byte,ushort,uint,ulong,charushortSbyte,byte,short,charintSbyte,byte,short,ushort,uint,ulong,charuintSbyte,byte,short,ushort,int,charlongSbyte,byte,short,ushort,uint,int,ulong,charulongSbyte,byte,short,ushort,uint,int,ulong,charcharSbyte,byte,shortfloatSbyte,byte,short,ushort,uint,int,long,char,decimaldoubleSbyte,byte,short,ushort,uint,int,long,char,fload,decimaldecimalSbyte,byte,short,ushort,uint,int,long,char,float,double
(3)變量與常量 變量表示存儲(chǔ)位置或單元,變量必須有確定的數(shù)據(jù)類(lèi)型。C#的類(lèi)型安全的含義之一就是確保變量的存儲(chǔ)位置有著合適的類(lèi)型。有的類(lèi)型前面還可以加修飾符來(lái)聲明變量的訪問(wèn)限制和分類(lèi),變量聲明的格式為: 修飾符類(lèi)型變量名; 修飾符類(lèi)型變量名=初始值; 格式中的“類(lèi)型”可以是系統(tǒng)的所有類(lèi)型和用戶(hù)自定義類(lèi)型,“變量名”滿(mǎn)足用戶(hù)自定義標(biāo)識(shí)符的定義,“初始值”是與該類(lèi)型一致的具體常量,“修飾符”可以為public,protectedInternal,private,protectedinternal,sealed,abstractnew,static。
一般來(lái)說(shuō)可以將C#中的變量分為靜態(tài)變量,實(shí)例變量,本地變量,傳值參數(shù),引用參數(shù),輸出參數(shù)和數(shù)組參數(shù)共七種。本地變量則是在方法體內(nèi)的臨時(shí)變量。靜態(tài)變量和實(shí)例變量主要是針對(duì)類(lèi)或結(jié)構(gòu)內(nèi)的數(shù)據(jù)成員(又叫字段)而言的。靜態(tài)變量在它寄存的類(lèi)或結(jié)構(gòu)類(lèi)型被裝載后得到存儲(chǔ)空間,如果沒(méi)有對(duì)它進(jìn)行初始化賦值,靜態(tài)變量的初始值將是它的類(lèi)型所持有的缺省值。實(shí)例變量在它的類(lèi)實(shí)例被創(chuàng)建后獲得存儲(chǔ)空間,如果沒(méi)有經(jīng)過(guò)初始化賦值,它的初始值與靜態(tài)變量的定義相同。兩者更詳細(xì)的說(shuō)明我們放在第3章中介紹。
傳值參數(shù),引用參數(shù),輸出參數(shù),數(shù)組參數(shù)主要針對(duì)方法的參數(shù)類(lèi)型而言的,這種參數(shù)稱(chēng)為形式參數(shù),簡(jiǎn)稱(chēng)形參,在聲明方法時(shí)給出。而調(diào)用方法時(shí)給定的參數(shù)稱(chēng)為實(shí)在參數(shù),簡(jiǎn)稱(chēng)實(shí)參。簡(jiǎn)單的講傳值參數(shù)是對(duì)變量的值的一種傳遞,方法內(nèi)對(duì)變量的改變?cè)诜椒w外不起作用。而引用參數(shù)是對(duì)變量的地址的一種傳遞,方法內(nèi)對(duì)變量的改變?cè)诜椒w外要起作用。對(duì)于實(shí)參本身就是引用型變量或地址稍有不同,方法內(nèi)對(duì)該引用變量或地址所指向的內(nèi)存塊的改變將在方法體外仍然保留改變,但對(duì)于引用本身或地址的改變不起作用。引用參數(shù)是對(duì)變量的地址的一種傳遞,方法內(nèi)對(duì)該變量的任何改變都將在方法體外保留。
輸出參數(shù)是C#專(zhuān)門(mén)為有多個(gè)返回值的方法而量身定做的,它類(lèi)似于引用變量,但可以在進(jìn)入方法體之前不進(jìn)行初始化,而其他的參數(shù)在進(jìn)入方法體內(nèi)前,C#都要求明確的初始化。數(shù)組參數(shù)是為傳遞大量的數(shù)組元素而專(zhuān)門(mén)設(shè)計(jì)的,它從本質(zhì)上講是一種引用型變量的傳值參數(shù)。它們更詳細(xì)的闡述放在第3章中介紹。表2.4表述了各種變量類(lèi)型的區(qū)分、聲明形式和描述舉例。 本地變量嚴(yán)格的講是在C#的塊語(yǔ)句,for語(yǔ)句,switch語(yǔ)句,using語(yǔ)句內(nèi)聲明的變量,它的生命周期嚴(yán)格地被限制在這些語(yǔ)句塊內(nèi)部。
變量類(lèi)型聲明形式和描述使用變量范圍例子靜態(tài)變量冠以static聲明的變量與類(lèi)的使用范圍同staticcharsex;實(shí)例變量類(lèi)中聲明的非靜態(tài)變量取決于public,protectedinteral,privatepublicintpub;protectedintpro;interalintinr;privateintpri;本地變量在方法內(nèi),塊語(yǔ)內(nèi),for,whiledo,doWhile,switch等語(yǔ)句中聲明的變量在方法內(nèi),塊語(yǔ)句,for,whiledo,dowhile,switch等語(yǔ)句內(nèi)Voidm(int[]p){intj=1;for(inti=0;i=9;i++){intk=j;P[i]=j++;}}傳值參數(shù)簡(jiǎn)單數(shù)據(jù)類(lèi)型聲明的變量只在方法內(nèi)有效Voidm(intp){p++;}intx=9;m(x);引用參數(shù)冠以ref聲明的變量取決于調(diào)用參數(shù)的范圍Voidm(refintp){p++;}m(refrp);輸出參數(shù)冠以out聲明的變量取決于調(diào)用參數(shù)的范圍Voidm(outintp){p=1;}m(outop);數(shù)組參數(shù)冠以[]聲明的變量取決于調(diào)用參數(shù)的范圍Voidm(int[]p){for(inti=0;i=9;i++)P[i]=i;}m(ap);委托變量冠以delegate聲明的變量取決于public,protectedinteral,privatedelegateintMyDelegate();
常量在編譯時(shí)便確定了它的值,在整個(gè)程序中也不許修改。常量聲明的同時(shí)必須賦值。由于它在編譯時(shí)確定值的特性,引用類(lèi)型可能的值只能為字符串和null。常量聲明的格式為:
const類(lèi)型常量名=常量;格式中的“類(lèi)型”可以是系統(tǒng)的所有類(lèi)型和用戶(hù)自定義類(lèi)型,“常量名”滿(mǎn)足用戶(hù)自定義標(biāo)識(shí)符的定義,“常量”是與該類(lèi)型一致的具體常量,但是如果“類(lèi)型”是除了string以外的引用類(lèi)型時(shí),“常量”只能為null。
(4)操作符與表達(dá)式
1)操作符 操作符也叫運(yùn)算符,它是把操作對(duì)象(常量、變量、函數(shù)等)連接起來(lái)進(jìn)行某種操作的符號(hào)。例如,+、-、*、/分別表示C#的加、減、乘、除算術(shù)運(yùn)算運(yùn)算符。表2.5是C#的所有分類(lèi)了的操作符。具體解釋參見(jiàn)參考網(wǎng)址[1]。表2.5操作符基本x.y,f(x),a[x],x++,x--,new
typeof,checked,unchecked,->
一元+,-,!,~,++x,--x,(T)x
True,False,&,sizeof
算術(shù)運(yùn)算+,-,*,/,%
位操作<<
,>>
,^(異或),|,&關(guān)系運(yùn)算<
,>,<=,>=,==
,!=類(lèi)型檢測(cè)is,as
邏輯運(yùn)算||,&&,!條件運(yùn)算?:
賦值=
,+=
,-=
,*=
,/=
,%=
,&=
|=
,^=
,<<=
,>>=
,??(如果??
運(yùn)算符的左操作數(shù)非null,該運(yùn)算符將返回左操作數(shù),否則返回右操作數(shù)。)Lambda運(yùn)算符(C#參考)
參考網(wǎng)址[1-2]
C#保留了C++所有的操作符,但是為了安全的需要,其中指針操作符(*和->)與引用操作符(&),需要有unsafe說(shuō)明才允許使用。這里主要介紹C#引入的具有特殊意義的幾個(gè)操作符:as,is,new,typeof,sizeof。
as操作符用于執(zhí)行兼容類(lèi)型之間的轉(zhuǎn)換,當(dāng)轉(zhuǎn)換失敗時(shí),as操作符結(jié)果為null。is操作符用于檢查對(duì)象的運(yùn)行時(shí)類(lèi)型是否與給定類(lèi)型兼容,當(dāng)表達(dá)式非null且可以轉(zhuǎn)化為指定類(lèi)型時(shí),is操作符結(jié)果為true,否則為false。as和is操作符是基于同樣的類(lèi)型鑒別和轉(zhuǎn)換而設(shè)計(jì)的,兩者有相似的應(yīng)用場(chǎng)合。實(shí)際上expressionastype相當(dāng)于expressionistype?(type)expression:(type)null。簡(jiǎn)單的說(shuō),他們的區(qū)別在于,is是檢查類(lèi)型是否相符,而as是在類(lèi)型相符時(shí)作了轉(zhuǎn)換,不符合時(shí)返回為null。
作為操作符的new用于在堆上創(chuàng)建對(duì)象和調(diào)用構(gòu)造函數(shù),值得注意的是值類(lèi)型對(duì)象(例如結(jié)構(gòu))是在棧上創(chuàng)建的,而引用類(lèi)型對(duì)象(例如類(lèi))是在堆上創(chuàng)建的。new也用于修飾符,用于隱藏基類(lèi)成員的繼承成員。為隱藏繼承的成員,使用相同名稱(chēng)在派生類(lèi)中聲明該成員并用new修飾符修改它。typeof運(yùn)算符用于獲得某一類(lèi)型的System.Type對(duì)象,我們將在第九章里結(jié)合Microsoft.NET的類(lèi)型系統(tǒng)對(duì)它作詳細(xì)的闡述。sizeof運(yùn)算符用于獲得值類(lèi)型(不適用于引用類(lèi)型)的大?。ㄒ宰止?jié)為單位)。C#里的某些操作符可以像C++里那樣被重載。操作符重載使得自定義類(lèi)型(類(lèi)或結(jié)構(gòu))可以用簡(jiǎn)單的操作符來(lái)方便的表達(dá)某些常用的操作。為完成一個(gè)計(jì)算結(jié)果的一系列操作符和操作數(shù)的組合稱(chēng)為表達(dá)式。和C++一樣,C#的表達(dá)式可以分為賦值表達(dá)式和布爾表達(dá)式兩種,C#沒(méi)有引入新的表達(dá)式形式,我們對(duì)此不再贅述。(5)命名空間與語(yǔ)句C#采用命名空間(namespace)來(lái)組織程序。命名空間可以嵌套。using指示符可以用來(lái)簡(jiǎn)化命名空間類(lèi)型的引用。using指示符有兩種用法。例如,我們想輸出“這是我的第一個(gè)程序”,使用如下語(yǔ)句:System.Console.WriteLine(“這是我的第一個(gè)程序”);第一種用法是使用如下語(yǔ)句:在程序的頭部加上“usingSystem;”語(yǔ)句后,使用“Console.WriteLine(“這是我的第一個(gè)程序”);”語(yǔ)句就可以了。另一種是,在程序的頭部使用“usingo=System.Console;”語(yǔ)句后,使用“o.WriteLine(“這是我的第一個(gè)程序”);”語(yǔ)句就可以了。由此可見(jiàn)命名空間的引入大大簡(jiǎn)化了C#程序的組織方式。C#語(yǔ)句可以分為標(biāo)號(hào)語(yǔ)句,聲明語(yǔ)句,塊語(yǔ)句,空語(yǔ)句,表達(dá)式語(yǔ)句,選擇語(yǔ)句,循環(huán)語(yǔ)句,跳轉(zhuǎn)語(yǔ)句,異常處理語(yǔ)句語(yǔ)句,檢查和未檢查語(yǔ)句,lock語(yǔ)句,using語(yǔ)句。表2.6描述了C#的主要語(yǔ)句類(lèi)型和相應(yīng)的關(guān)鍵字。
類(lèi)別C#關(guān)鍵字選擇語(yǔ)句
if,else,switch,case迭代語(yǔ)句
do,for,foreach,in,while跳轉(zhuǎn)語(yǔ)句
break,continue,default,goto,return,yield異常處理語(yǔ)句
throw,try-catch,try-finally,try-catch-finally檢查和未檢查
checked,uncheckedfixed語(yǔ)句
fixed
lock語(yǔ)句
lock
using語(yǔ)句using標(biāo)號(hào)語(yǔ)句主要為goto跳轉(zhuǎn)設(shè)計(jì),C#不允許跨方法的跳轉(zhuǎn),但允許小規(guī)模的方法內(nèi)的跳轉(zhuǎn)。聲明語(yǔ)句主要是說(shuō)明變量、常數(shù)等,同時(shí)也可以進(jìn)行初始化賦值,對(duì)象的實(shí)例化聲明需要new關(guān)鍵字。塊語(yǔ)句采用"{"和"}"定義語(yǔ)句塊,主要是界定局部變量的作用范圍。空語(yǔ)句在C#中用分號(hào)";"表示,沒(méi)有執(zhí)行語(yǔ)義。表達(dá)式語(yǔ)句通過(guò)表達(dá)式構(gòu)成語(yǔ)句。選擇語(yǔ)句有if語(yǔ)句和switch語(yǔ)句兩種,與C++別無(wú)二致。循環(huán)語(yǔ)句除了while,do,for三種循環(huán)結(jié)構(gòu)外,還引入了foreach語(yǔ)句用于遍歷集合中所有的元素,但這需要特定的接口支持,我們?cè)诤竺娴恼鹿?jié)里會(huì)作詳細(xì)闡述。跳轉(zhuǎn)語(yǔ)句有break,continue,goto,return,yield五種語(yǔ)句,前四種與C++里的語(yǔ)義相同,yield語(yǔ)句有點(diǎn)特殊,是C#特有的語(yǔ)句。throw語(yǔ)句與后面的try語(yǔ)句與Java語(yǔ)言基本相同。checked/unchecked語(yǔ)句主要用于數(shù)值運(yùn)算中溢出檢查。lock語(yǔ)句主要用于線程信號(hào)量的鎖控制。using語(yǔ)句主要用于片斷資源管理。這些我們?cè)诤罄m(xù)章節(jié)里都會(huì)有具體的介紹。
2.3正則表達(dá)式及其工具RegexTester介紹
為了掌握以后章節(jié)中的搜索匹配技術(shù)和閱讀程序,本節(jié)對(duì)正則表達(dá)式的相關(guān)知識(shí)和正則表達(dá)式測(cè)試工具RegexTester進(jìn)行介紹。
2.3.1正則表達(dá)式 正則表達(dá)式是一種匹配文本中的字符序列的字符模式。在很多文本編輯器或其他工具里,正則表達(dá)式通常被用來(lái)檢索或替換那些符合某種模式的文本內(nèi)容。許多程序設(shè)計(jì)語(yǔ)言都支持利用正則表達(dá)式進(jìn)行字符串操作。
一個(gè)正則表達(dá)式就是由普通字符(例如字符‘a(chǎn)’到‘z’)以及特殊字符(稱(chēng)為元字符)組成的文字模式。該模式描述在查找文字主體時(shí)待匹配的一個(gè)或多個(gè)字符串。正則表達(dá)式作為一個(gè)模板,將某個(gè)字符模式與所搜索的字符串進(jìn)行匹配。 在本書(shū)很多例子中,例如,股票分析系統(tǒng)從網(wǎng)頁(yè)上抽取需要的信息和解析其它證券軟件的文件時(shí),都需要運(yùn)用正則匹配技術(shù)來(lái)獲取所需要的數(shù)據(jù)信息。元字符在正則表達(dá)式中是一類(lèi)非常特殊的字符,它能匹配一個(gè)位置或字符集合中的一個(gè)字符。根據(jù)功能,元字符可以分為兩種類(lèi)型:匹配位置的元字符和匹配字符的元字符。表2.9和2.10分別列舉了常用的匹配字符和匹配位置的元字符列表。字符描述實(shí)例\d匹配任意的數(shù)字\d\d可以匹配12,但不匹配a1或1a等\D匹配任意的非數(shù)字字符\D\D匹配a@,不匹配12\w匹配單詞字符(包括字母、數(shù)字、下劃線和漢字)\W匹配任意的非單詞字符(非字母、數(shù)字、下劃線和漢字)\W匹配@等,不匹配a\s匹配任何空白字符,包括空格、制表符、換行符等\S匹配任意非空白字符.匹配除換行符之外的任意字符
表2.9匹配字符的元字符列表
表2.10匹配位置的元字符列表
字符描述實(shí)例^匹配行的開(kāi)始位置"^The":表示所有以"The"開(kāi)始的字符串("There","Thecat"等)$匹配行的結(jié)束位置"ofdespair$":表示以"ofdespair"結(jié)尾的字符串\b匹配單詞的開(kāi)始或結(jié)束位置"\bcat"將匹配"catcatcat"首尾的"cat",中間的"cat"不會(huì)被匹配上\B\b的補(bǔ)集"\bcat"將匹配"catcatcat"中間的"cat"
字符類(lèi) 在正則表達(dá)式中,元字符通常一次只能匹配一個(gè)位置或字符集合中的一個(gè)字符,但是如果要匹配的字符集合沒(méi)有與之相對(duì)應(yīng)的元字符時(shí),則需要自定義匹配的字符集合。此時(shí)可以使用字符類(lèi)解決這個(gè)問(wèn)題。字符類(lèi)是一個(gè)字符集合,如果該字符集合中的任何一個(gè)字符被匹配,則它就會(huì)找到該匹配項(xiàng)。 字符類(lèi)是正則表達(dá)式中的“迷你”語(yǔ)言,可以在方括號(hào)"[]"中定義。例如:[012345]匹配數(shù)字0,1,2,3,4,5中的任何一個(gè)。[Jj]ack匹配字符串“Jack”或者“jack”。 然而,正則表達(dá)式[0123456789]的書(shū)寫(xiě)非常不方便。因此,正則表達(dá)式引入連接符“-”定義字符的范圍。例如:正則表達(dá)式[0-9]等價(jià)于正則表達(dá)式[0123456789]。
限定符正則表達(dá)式的元字符一次只能匹配一個(gè)位置或一個(gè)字符,如果要匹配零個(gè)、一個(gè)或多個(gè)字符時(shí),則需要使用限定符。限定符用于指定允許特定字符或字符集自身重復(fù)出現(xiàn)的次數(shù)。常用限定符的說(shuō)明如表2.11所示。
轉(zhuǎn)義字符正則表達(dá)式定義了一些特殊的元字符,如^、$、.等。由于這些字符在正則表達(dá)式中被解釋成其他的特定的意義,如果需要匹配這些字符,則需要使用轉(zhuǎn)義字符來(lái)解決這一問(wèn)題。轉(zhuǎn)義字符為“\”(反斜杠),它可以取消這些字符(如^、$、.等)在表達(dá)式中具有的特殊意義,轉(zhuǎn)義字符說(shuō)明及實(shí)例如表2.12。
表2.11限定符列表
字符描述實(shí)例{n}重復(fù)n次'o{2}'不能匹配"Bob"中的'o',但是能匹配"food"中的兩個(gè)。{n,}至少重復(fù)n次'o{2,}'不能匹配"Bob"中的'o',但能匹配"foooood"中的所有o。'o{1,}'等價(jià)于'o+'。'o{0,}'則等價(jià)于'o*'。{n,m}重復(fù)至少n次,最多m次"o{1,3}"將匹配"fooooood"中的前三個(gè)o。'o{0,1}'等價(jià)于'o?'。+重復(fù)至少1次,等同{1,}'zo+'能匹配"zo"以及"zoo",但不能匹配"z"。+等價(jià)于{1,}。*重復(fù)至少0次,等同{0,}zo*能匹配"z"以及"zoo"。*等價(jià)于{0,}。?當(dāng)該字符緊跟在任何一個(gè)其他限定符(*,+,?,{n},{n,},{n,m})后面時(shí),匹配模式是非貪婪的。非貪婪模式盡可能少的匹配所搜索的字符串,而默認(rèn)的貪婪模式則盡可能多的匹配所搜索的字符串。對(duì)于字符串"oooo",'o+?'將匹配單個(gè)"o",而'o+'將匹配所有'o'。
表2.12轉(zhuǎn)義字符字符描述實(shí)例\有些字符被用來(lái)表示特殊的含義,但是要匹配其本身時(shí)就需要用轉(zhuǎn)義字符。"\\"匹配"\""\."匹配".""\*"匹配"*""\+"匹配"+""\unnnn"匹配一個(gè)4位16進(jìn)制數(shù)指定的Unicode
分組、“或”和反向引用 前面講到怎么重復(fù)單個(gè)字符(直接在字符后面加上限定符就行了);但如果想要重復(fù)一個(gè)字符串就應(yīng)該使用分組。 分組又稱(chēng)為子表達(dá)式,即把一個(gè)正則表達(dá)式的全部或部分分成一個(gè)或多個(gè)組。其中,分組使用括號(hào)“()”表示。分組之后,可以將括號(hào)“()”之中的表達(dá)式看成一個(gè)整體來(lái)處理,然后再指定這個(gè)子表達(dá)式的重復(fù)次數(shù)。例如:“(\d{1,3}\.){3}\d{1,3}”是一個(gè)簡(jiǎn)單的IP地址匹配表達(dá)式?!?\d{1,3}\.){3}”匹配三位數(shù)字加上一個(gè)英文句號(hào)重復(fù)3次,“\d{1,3}”匹配1到3位的數(shù)字。
“或”使用字符“|”來(lái)表示。如果某一個(gè)字符串匹配了正則表達(dá)式中的字符“|”的左邊或者右邊的規(guī)則,那么該字符串也匹配了該正則表達(dá)式。例如:“0\d{2}-\d{8}|0\d{3}-\d{7}|0\d{3}-\d{8}”匹配當(dāng)前國(guó)內(nèi)部分地區(qū)的3種固定電話號(hào)碼:一種是號(hào)碼的前3位為區(qū)號(hào),后8位為本地號(hào)碼;另一種是號(hào)碼的前四位為區(qū)號(hào),后7位為本地號(hào)碼;最后一種是號(hào)碼的前4位為區(qū)號(hào),后8位為本地號(hào)碼。其中,區(qū)號(hào)和本地號(hào)碼都使用連接符號(hào)“-”進(jìn)行連接。 當(dāng)一個(gè)正則表達(dá)式被分組之后,每一個(gè)組將自動(dòng)被賦予一個(gè)組號(hào),該組號(hào)可以代表該組的表達(dá)式。其中,組號(hào)的編制規(guī)則為:從左到右,以分組的左括號(hào)“(”為標(biāo)志,第一個(gè)分組組號(hào)為1,第二個(gè)分組的組號(hào)為2,以此類(lèi)推。反向引用提供了查找重復(fù)字符組的方便方法。它可被認(rèn)為是再次匹配同一個(gè)字符串的快捷指令。反向引用可以使用數(shù)字命名的組號(hào),語(yǔ)法為:\number,也可以使用指定命名的組號(hào),語(yǔ)法為:\k<name>。例如:表達(dá)式“('|")(.*?)(\1)”在匹配“'Hello',"World"”時(shí),首先匹配到的內(nèi)容是:“'Hello'”。再次匹配下一個(gè)時(shí),可以匹配到“"World"”。
2.3.2表達(dá)式測(cè)試工具RegexTester基于正則表達(dá)式的信息抽取技術(shù)主要應(yīng)用正則匹配技術(shù),對(duì)于要匹配的對(duì)象首先要分析其組成特征,然后手工寫(xiě)出能與該對(duì)象匹配的正則表達(dá)式,再用支持正則表達(dá)式的應(yīng)用程序?qū)崿F(xiàn)。正則表達(dá)式的編寫(xiě)比較復(fù)雜,對(duì)技術(shù)有一定要求,并且需要有很強(qiáng)的觀察能力,發(fā)現(xiàn)所要抽取的信息和其他信息的不同之處,以便寫(xiě)出的正則表達(dá)式能夠最大程度的過(guò)濾掉“臟數(shù)據(jù)”(被匹配上但不是所需要的數(shù)據(jù))。
應(yīng)用正則表達(dá)式的信息抽取技術(shù)的關(guān)鍵點(diǎn)和難點(diǎn)就是寫(xiě)出合適的正則表達(dá)式,該表達(dá)式必須最大可能的去除“臟數(shù)據(jù)”,過(guò)濾掉其他不相關(guān)的信息。確定正則表達(dá)式的過(guò)程比較復(fù)雜,可能需要多次的驗(yàn)證和調(diào)整。通過(guò)數(shù)據(jù)校驗(yàn)才能確定所書(shū)寫(xiě)的正則表達(dá)式是否正確,所以確定
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 化妝鏡、放大鏡、裝飾鏡及各類(lèi)玻璃制品的生產(chǎn)第二次擴(kuò)建項(xiàng)目環(huán)評(píng)報(bào)告表
- 洋浦疏港高速公路工程SG01標(biāo)段拌合站、鋼筋加工場(chǎng)、辦公用房環(huán)評(píng)報(bào)告(公示稿)環(huán)評(píng)報(bào)告表
- 2025年化學(xué)氣相沉積硫化鋅(CVDZNS)晶體合作協(xié)議書(shū)
- 海南馨島優(yōu)匯生物科技有限公司年產(chǎn)3萬(wàn)噸微生物菌劑和2萬(wàn)噸有機(jī)水溶肥項(xiàng)目環(huán)境影響報(bào)告表公示稿環(huán)評(píng)報(bào)告表
- 中貝通信被擔(dān)保人最近一期財(cái)務(wù)報(bào)表
- 內(nèi)蒙古華云新材料有限公司審計(jì)報(bào)告
- 露天礦山工程邊坡施工方案
- 墩柱滑模施工方案
- 緩釋肥與常規(guī)復(fù)合肥配合施用對(duì)水稻產(chǎn)量和品質(zhì)的影響分析
- 醫(yī)療機(jī)構(gòu)水污染物排放的治理技術(shù)
- 老年患者出院準(zhǔn)備服務(wù)專(zhuān)家共識(shí)
- 2023-2024學(xué)年人教版新教材必修第二冊(cè) 第五章第三節(jié) 無(wú)機(jī)非金屬材料 課件(28張)
- 巖腳煤礦智能化綜采工作面匯報(bào)材料2020.11.10.11.10
- 四川省廣安市2021年中考地理真題(含答案)
- 大貨車(chē)安全駕駛技巧
- 高考小說(shuō)閱讀強(qiáng)化訓(xùn)練:孫犁小說(shuō)專(zhuān)題(附答案解析)
- 互聯(lián)網(wǎng)汽車(chē)金融外文文獻(xiàn)翻譯
- 向云端二聲部五線正譜
- DC-DC反激變壓器計(jì)算
- 簡(jiǎn)約寶貝成長(zhǎng)檔案 兒童成長(zhǎng)手冊(cè)A4版【空白可編輯內(nèi)容】
- 運(yùn)用PDCA血透室導(dǎo)管感染率
評(píng)論
0/150
提交評(píng)論