首頁 後端開發 C#.Net教程 SUNWEN教程之----C#進階(五)

SUNWEN教程之----C#進階(五)

Dec 19, 2016 am 10:20 AM

我現在要說的是庫(libraries),和大家一起學習如何用C#建立一個DLL檔.說起DLL,肯定是無人不知,無人不曉,這個WINDOWS的典型代表,同時也經常是大家功擊的對象.呵呵,不管怎麼樣,學還是要學的.我們下面就開始,如何用命令行方式將一個C#程式編譯成DLL,和如何在客戶端使用他.

這個例子包括兩個檔,一個是Factorial.cs,作用是計算一個數字的階乘.還有一個是DigitCounter.cs,作用是計算傳過來的字符串參數中的數字的數目.

我們可以這樣來建立庫,在命令列方式下這樣做:
csc /target:library /out:Functions.dll Factorial.cs DigitCounter.cs

下面講一下各個參數的用法:

/target:library:向系統指出輸出的是一個參數的用法:

/target:library:向系統指出輸出的是一個DLL庫,而不是一個EXE的可執行檔.

/out:Functions.dll:指定輸出的DLL的檔名,即Functions.dll,一般地,如果你省略了第一個參數,那麼預設的檔名將是第一個檔案的檔名,即Factorial.dll.

下面我們再來建立一個檔,即使用這個函式庫的檔,叫客戶端檔,FunctionClient.cs.建立好後,用下面的語名編譯:

csc /out:FunctionTest.exe /R:Functions.DLL FunctionClient.cs

下面說一下這個編譯語句的用法:

/out:FunctionTest.exe:指出輸出的檔名是FunctionTest. Functions.DLL:指出要引用的庫,如果不是在當前目錄下,必須要指出其的完整路徑.


下面我就把這幾個文件的代碼寫在下面:


000: // LibrariesFactorial. cs
001: using System; 
002: 
003: namespace Functions 
004: { 
005: public class Factorial 
006: { 
007:public class Factorial 
006: { 9: return(( i 010: } 
011: }
012: }
這是Factorial.cs這個檔案的程式碼.在003行,namespace的意思是名字空間,根據M$的介紹,庫必鬚根據它的名字空間打包,以使.NET能夠正確地載入你的類.

下面是DigitCounter.cs這個文件的內容:

000: / / LibrariesDigitCounter.cs
001: using System; 
002: 
003: namespace Functions 
004: { 
005: public class DigitCount 
006: 
005: public class DigitCount 
006: 
008: { 
009: int count = 0; 
010: for ( int i = 0; i 011: { 
012: if ( Char.IsDigit(theString[i]) ) 
013: if ( Char.IsDigit(theString[i]) ) 
013:01 ; 
015: } 
016: } 
017: 
018: return count; 
019: } 
020: }
021: }

空間一個庫中的.NumberOfDigits方法計算了參數中的數字的個數.

第三個檔案是FunctionClient.cs


我們知道,一個庫一旦建立,就可以被別的類利用(廢話,要不然怎麼叫庫呢?).下面的C#程式就利用了我們剛才建立的函式庫中的類別.


000: // LibrariesFunctionClient.cs
001: using System; 
002: using Functions;
003: class Function 004: { 
005: public static void Main(string[] args) 
006: { 
007: Console.WriteLine("Function Client"); 
008: 🜎 : {
011: Console.WriteLine("Usage: FunctionTest ... "); 
012: return; 
013: } 
014: 
015: for ( int i = 0; 016: { 
017: int num = Int32.Parse(args[i]); 
018: Console.WriteLine(
019: "The Digit Count for String [{0}] is [{1}]", : args[i], 
021: DigitCount.NumberOfDigits(args[i])); 
022: Console.WriteLine(
023: "The Factorial for [{0}] is [{1}]
023: "The Factorial for [{0}] is [{1}]"
num, 
025: Factorial.Calc(num) ); 
026: } 
027: } 
028: }
在002行,一個using Functions指明了引用Functions. }
在002行,一個using Functions指明了引用Functions.DLL這個類別.如果我們在行中鍵入以下指令,就可以看到輸出:

FunctionTest 3 5 10

輸出:


Function Client

The Digit Count for String [3] is [1] Client

The Digit Count for String [3] is [1] 是 33]/35s [Theial s [Theial [1]3] 6]

The Digit Count for String [5] is [1]

The Factorial for [5] is [120]

The Digit Count for String [10] is [2]

The Factorial forThe Factorial for [10] is [3628800]

注意:當你執行這個.EXE檔案時,它所引用的DLL檔案可以是在目前目錄,子目錄,或是CORPATH這個環境變數.CORPATH這個環境變數是在.NET環境中的類路徑,用來指引系統尋找類.說白了,就是java中的CLASSPATH,明白了吧,呵呵.

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

使用 C# 的活動目錄 使用 C# 的活動目錄 Sep 03, 2024 pm 03:33 PM

使用 C# 的 Active Directory 指南。在這裡,我們討論 Active Directory 在 C# 中的介紹和工作原理以及語法和範例。

C# 序列化 C# 序列化 Sep 03, 2024 pm 03:30 PM

C# 序列化指南。這裡我們分別討論C#序列化物件的介紹、步驟、工作原理和範例。

C# 中的隨機數產生器 C# 中的隨機數產生器 Sep 03, 2024 pm 03:34 PM

C# 隨機數產生器指南。在這裡,我們討論隨機數產生器的工作原理、偽隨機數和安全數的概念。

C# 資料網格視圖 C# 資料網格視圖 Sep 03, 2024 pm 03:32 PM

C# 資料網格視圖指南。在這裡,我們討論如何從 SQL 資料庫或 Excel 檔案載入和匯出資料網格視圖的範例。

C# 中的階乘 C# 中的階乘 Sep 03, 2024 pm 03:34 PM

C# 階乘指南。這裡我們討論 C# 中階乘的介紹以及不同的範例和程式碼實作。

C# 中的模式 C# 中的模式 Sep 03, 2024 pm 03:33 PM

C# 模式指南。在這裡,我們討論 C# 中模式的介紹和前 3 種類型,以及其範例和程式碼實作。

c#多線程和異步的區別 c#多線程和異步的區別 Apr 03, 2025 pm 02:57 PM

多線程和異步的區別在於,多線程同時執行多個線程,而異步在不阻塞當前線程的情況下執行操作。多線程用於計算密集型任務,而異步用於用戶交互操作。多線程的優勢是提高計算性能,異步的優勢是不阻塞 UI 線程。選擇多線程還是異步取決於任務性質:計算密集型任務使用多線程,與外部資源交互且需要保持 UI 響應的任務使用異步。

C# 中的質數 C# 中的質數 Sep 03, 2024 pm 03:35 PM

C# 質數指南。這裡我們討論c#中素數的介紹和範例以及程式碼實作。

See all articles