ホームページ  >  記事  >  バックエンド開発  >  SUNWEN チュートリアル - C# 上級 (5)

SUNWEN チュートリアル - C# 上級 (5)

黄舟
黄舟オリジナル
2016-12-19 10:20:281076ブラウズ

これから説明するのはライブラリであり、C# を使用して DLL ファイルを作成する方法を学びましょう。DLL といえば、WINDOWS の代表的なものであり、誰もがよく使うものです。攻撃の対象です。何はともあれ、まずはコマンド ラインを使用して C# プログラムを DLL にコンパイルする方法と、それをクライアントで使用する方法から始めましょう。 2 つのファイルで、1 つは数値の階乗を計算するために使用される Factorial.cs で、もう 1 つは渡された文字列パラメーター内の数値の数を計算するために使用される

ライブラリを構築できます。コマンド ライン モードで次のようにします:

csc /target:library /out:Functions.dll Factorial.cs DigitCounter.cs

各パラメーターの使用法について説明します:

/target:library:

/out: Functions.dll: 出力 DLL のファイル名を指定します。通常、最初のパラメーターを省略すると、デフォルトのファイルになります。最初のファイルのファイル名は Factorial.dll です

次に、このライブラリを使用する、クライアント ファイル FunctionClient.cs という名前の別のファイルを作成します。次の言語名:

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

このコンパイル ステートメントの使用法について話しましょう:

/out:FunctionTest.exe: 出力ファイル名がFunctionTest.exe

/R: Functions.DLL: 参照するライブラリを指定します。現在のディレクトリにない場合は、そのフルパスを指定する必要があります。以下にこれらのファイルのコードを記述します。

000: // LibrariesFactorial.cs
001: System を使用します。

002:

003: 名前空間関数
004: {

005: public class Factorial

006: {
007: public static int Calc(int i)
008 : {
009: return(( i 011: }
012: }
これは階乗のコードです。 cs ファイルの 003 行目で、namespace は名前空間を意味します。M$ によれば、.NET がクラスを正しくロードできるように、ライブラリはその名前空間に従ってパッケージ化する必要があります。

DigitCounter.cs ファイルの内容は次のとおりです。
000: // LibrariesDigitCounter.cs
001: System を使用します。
002:
003: 名前空間関数
004: {

005: public class DigitCount

006: {

007: public static int NumberOfDigits(string theString)

0 08: {
009 : int count = 0;
010: for ( int i = 0; i 011: {
012: if ( Char.IsDigit(theString[i]) )
013: {
014 : count++;
015: }
016: }
017:
018: return count;
020: }
021: }
この例の名前空間は最初のものと一致している必要があることに注意してくださいパラメーター内の数値の数を計算するのは、同じライブラリ内の NumberOfDigits メソッドであるためです。

3 番目のファイルは FunctionClient.cs です


ライブラリが作成されると、他のクラスで使用できることがわかっています。 (ナンセンスです。そうしないと、どうやってライブラリと呼ぶことができますか?) 次の C# プログラムは、先ほど作成したライブラリ内のクラスを使用します。

000: // LibrariesFunctionClient.cs
001: using System;
003: クラス FunctionClient

004: {

005: public static void Main(string[] args)

006: {

007: Console.WriteLine("Function Client")
008:

009: if ( args.Length == 0 )

010: {
011: Console.WriteLine("使用法: FunctionTest ... ");
013: }
014:
015: for ( int i = 0; i < args.Length; i++ )
016: {
017: int num = Int32.Parse(args[i]);
018: Console.WriteLine(
019: "文字列 [{0}] の桁数は [{ 1}]" ,
020: args[i],
021: DigitCount.NumberOfDigits(args[i]));
022: Console.WriteLine(
023: "[{0}] の階乗は [{1 }]",
024: num,
025: Factorial.Calc(num) );
026: }
027: }
028: }
002 行目で、using Functions は Functions.DLL クラスへの参照を指定します。

コマンドラインに次のコマンドを入力すると、出力が表示されます:


FunctionTest 3 5 10

Output:

Function Client

文字列 [3] の桁数は [1]

[3] の階乗は [6] です

文字列 [5] の桁数は [1] です

[5] の階乗は [120] です

文字列 [10] の桁数は [2]

[10] の階乗は [3628800] です

注: この .EXE ファイルを実行するとき、参照する DLL ファイルは、現在のディレクトリ、サブディレクトリ、または CORPATH 環境変数に存在する可能性があります。 .NET 環境では、クラスパスは、システムがクラスを見つけるようにガイドするために使用されます。分かりやすく言うと、Java の CLASSPATH です。
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。