スレッド プログラムの実行パスとして定義されます。各スレッドは、固有の制御フローを定義します。アプリケーションに複雑で時間のかかる操作が含まれる場合、各スレッドが特定のジョブを実行するように、異なる実行パスまたはスレッドを設定すると役立つことがよくあります。 スレッドは軽量プロセスです .スレッドの一般的な使用例の 1 つは、最新のオペレーティング システムによる並行プログラミングの実装です。スレッドを使用することで、CPU サイクルの無駄を省き、アプリケーションの効率を高めます。 これまでのところ、アプリケーションの実行中のインスタンスである単一のプロセスとして単一のスレッドが実行される
C# では、unsafe でマークされている場合、コード ブロックの関数でポインター変数を使用できます。 修飾子。 安全でないコード または、アンマネージ コードが ポインタ を使用するコード ブロックである ポインター ポインタ 値が別の変数のアドレス、つまりメモリ位置の直接アドレスである変数です。変数や定数と同様に、変数アドレスを格納するために使用する前に、ポインターを宣言する必要があります。 ポインタ宣言の一般的な形式は − type *var-name; 以下は有効なポインタ宣言です − int *ip; /* pointer to an integer */
デリゲートは、デリゲートと同じシグネチャを持つメソッドを参照するために使用されることを説明しました。つまり、そのデリゲート オブジェクトを使用して、デリゲートが参照できるメソッドを呼び出すことができます。 匿名メソッド コード ブロックをデリゲート パラメーターとして渡す手法を提供します。匿名メソッドは、名前がなく、本体だけのメソッドです。 匿名メソッドで戻り値の型を指定する必要はありません。メソッド本体内の return ステートメントから推測されます。 匿名メソッドの記述 匿名メソッドは、デリゲート を使用してデリゲート インスタンスを作成することで宣言されます。 キーワード。たとえ
ジェネリック プログラムで実際に使用されるまで、クラスまたはメソッド内のプログラミング要素のデータ型の仕様を定義できます。つまり、ジェネリックを使用すると、任意のデータ型で機能するクラスまたはメソッドを作成できます。 データ型の代替パラメーターを使用して、クラスまたはメソッドの仕様を記述します。コンパイラは、クラスのコンストラクターまたはメソッドの関数呼び出しを検出すると、特定のデータ型を処理するコードを生成します。簡単な例は、概念を理解するのに役立ちます − ライブデモ using System; using System.Collections.Generic; namespace
コレクション クラスは、データの格納と取得に特化したクラスです。これらのクラスは、スタック、キュー、リスト、およびハッシュ テーブルをサポートします。ほとんどのコレクション クラスは同じインターフェイスを実装します。 コレクション クラスは、要素にメモリを動的に割り当てたり、インデックスなどに基づいてアイテムのリストにアクセスしたりするなど、さまざまな目的に使用されます。これらのクラスは、C# のすべてのデータ型の基本クラスである Object クラスのオブジェクトのコレクションを作成します。 さまざまなコレクション クラスとその使用方法 以下は、System.Collection の一
イベント キーの押下、クリック、マウスの移動などのユーザー アクション、またはシステム生成の通知などの発生です。アプリケーションは、イベントが発生したときにそれに応答する必要があります。たとえば、割り込み。イベントはプロセス間通信に使用されます。 イベントでのデリゲートの使用 イベントはクラスで宣言および発生され、同じクラスまたは他のクラス内のデリゲートを使用してイベント ハンドラーに関連付けられます。イベントを含むクラスは、イベントの公開に使用されます。これは発行者と呼ばれます クラス。このイベントを受け入れる他のクラスは subscriber と呼ばれます クラス。イベントは publ
C# デリゲートは、C または C++ における関数へのポインターに似ています。 代理人 メソッドへの参照を保持する参照型変数です。参照は実行時に変更できます。 デリゲートは、特にイベントとコールバック メソッドの実装に使用されます。すべてのデリゲートは System.Delegate から暗黙的に派生します クラス。 デリゲートの宣言 デリゲート宣言は、デリゲートによって参照できるメソッドを決定します。デリゲートは、デリゲートと同じシグネチャを持つメソッドを参照できます。 たとえば、デリゲートを考えてみましょう − public delegate int MyDelegate (st
インデクサー 配列などのオブジェクトにインデックスを付けることができます。クラスのインデクサーを定義すると、このクラスは 仮想配列 と同じように動作します .その後、配列アクセス演算子 ([ ]) を使用して、このクラスのインスタンスにアクセスできます。 構文 1 次元インデクサーには次の構文があります − element-type this[int index] { // The get accessor. get { // return the value specified by index } // The set accessor.
プロパティ クラス、構造体、およびインターフェイスの名前付きメンバーです。クラスまたは構造体のメンバー変数またはメソッドは フィールド と呼ばれます .プロパティはフィールドの拡張であり、同じ構文を使用してアクセスされます。 アクセサを使用 これにより、プライベート フィールドの値を読み取り、書き込み、または操作できます。 プロパティは、保存場所に名前を付けません。代わりに、アクセサーがあります それらの値を読み取り、書き込み、または計算します。 たとえば、年齢、名前、コードのプライベート フィールドを持つ Student という名前のクラスがあるとします。クラス スコープ外からこれらのフ
リフレクション オブジェクトは、実行時に型情報を取得するために使用されます。実行中のプログラムのメタデータへのアクセスを提供するクラスは、System.Reflection にあります。 名前空間。 System.Reflection 名前空間には、アプリケーションに関する情報を取得し、型、値、およびオブジェクトをアプリケーションに動的に追加できるクラスが含まれています。 振り返りの応用 リフレクションには次のアプリケーションがあります − 実行時に属性情報を表示できます。 アセンブリ内のさまざまなタイプを調べて、これらのタイプをインスタンス化できます。 メソッドとプロパ
属性 プログラム内のクラス、メソッド、構造体、列挙子、アセンブリなどのさまざまな要素の動作に関する情報をランタイムに伝えるために使用される宣言タグです。属性を使用して、宣言情報をプログラムに追加できます。宣言タグは、それが使用される要素の上に配置された角括弧 ([ ]) によって表されます。 属性は、コンパイラ命令などのメタデータや、コメント、説明、メソッド、クラスなどのその他の情報をプログラムに追加するために使用されます。 .Net Framework は 2 種類の属性を提供します:定義済み 属性と特注 属性の指定 属性を指定するための構文は次のとおりです − [attribute
ファイル 特定の名前とディレクトリ パスを持つディスクに格納されたデータのコレクションです。ファイルが読み取りまたは書き込み用に開かれると、ストリームになります . ストリームは基本的に、通信パスを通過する一連のバイトです。 2 つのメイン ストリームがあります:入力ストリーム そして出力ストリーム . 入力ストリーム ファイルからのデータの読み取り (読み取り操作) と 出力ストリーム に使用されます ファイルへの書き込み (書き込み操作) に使用されます。 C# I/O クラス System.IO 名前空間には、ファイルの作成と削除、ファイルの読み取りと書き込み、ファイルのクローズなど
例外は、プログラムの実行中に発生する問題です。 C# 例外は、ゼロ除算など、プログラムの実行中に発生する例外的な状況への応答です。 例外は、プログラムのある部分から別の部分に制御を移す方法を提供します。 C# の例外処理は、try の 4 つのキーワードに基づいて構築されています。 、キャッチ 、ついに 、投げる . 試す − try ブロックは、特定の例外がアクティブ化されるコードのブロックを識別します。その後に 1 つ以上の catch ブロックが続きます。 キャッチ − プログラムは、問題を処理したいプログラム内の場所で、例外ハンドラーを使用して例外をキャッチします。 ca
正規表現 入力テキストと照合できるパターンです。 .Net フレームワークは、このようなマッチングを可能にする正規表現エンジンを提供します。パターンは、1 つ以上の文字リテラル、演算子、または構造体で構成されます。 正規表現を定義するための構文 正規表現を定義できる文字、演算子、および構造体には、さまざまなカテゴリがあります。次のリンクをクリックして、これらの構造を見つけてください。 文字エスケープ 文字クラス アンカー グループ化構造 数量詞 後方参照構造 代替構造 代替 その他の構造 正規表現クラス Regex クラスは、正規表
プリプロセッサ ディレクティブは、実際のコンパイルが開始される前に情報を前処理するようコンパイラに指示します。 すべてのプリプロセッサ ディレクティブは # で始まり、空白文字のみが行のプリプロセッサ ディレクティブの前に表示されます。プリプロセッサ ディレクティブはステートメントではないため、セミコロン (;) で終わりません。 C# コンパイラには個別のプリプロセッサがありません。ただし、ディレクティブはあたかも存在するかのように処理されます。 C# では、条件付きコンパイルを支援するためにプリプロセッサ ディレクティブが使用されます。 C および C++ ディレクティブとは異なり、マ
名前空間 ある名前のセットを別の名前セットから分離する方法を提供するために設計されています。ある名前空間で宣言されたクラス名は、別の名前空間で宣言された同じクラス名と競合しません。 名前空間の定義 名前空間の定義はキーワード namespace で始まります 次のように名前空間名が続きます- namespace namespace_name { // code declarations } 関数または変数の名前空間対応バージョンを呼び出すには、次のように名前空間名を先頭に追加します − namespace_name.item_name; 次のプログラムは、名前空間の使用を示
インターフェイスは、インターフェイスを継承するすべてのクラスが従う必要がある構文の契約として定義されます。インターフェースは what を定義します 構文契約の一部と派生クラスが how を定義します 構文契約の一部です。 インターフェイスは、インターフェイスのメンバーであるプロパティ、メソッド、およびイベントを定義します。インターフェイスには、メンバーの宣言のみが含まれます。メンバーを定義するのは派生クラスの責任です。多くの場合、派生クラスが従う標準構造を提供するのに役立ちます。 抽象クラスはある程度同じ目的を果たしますが、基本クラスによって宣言されるメソッドがほとんどなく、派生クラスが
C# で使用できるほとんどの組み込み演算子を再定義またはオーバーロードできます。したがって、プログラマーは、ユーザー定義型でも演算子を使用できます。オーバーロードされた演算子は、キーワード operator という特別な名前を持つ関数です 定義されている演算子の記号が続きます。他の関数と同様に、オーバーロードされた演算子には戻り値の型とパラメーター リストがあります。 たとえば、次の関数を実行します- public static Box operator+ (Box b, Box c) { Box box = new Box(); box.length = b.length +
ポリモーフィズムという言葉 形が多いという意味です。オブジェクト指向プログラミング パラダイムでは、ポリモーフィズムは「1 つのインターフェイス、複数の機能」として表現されることがよくあります。 ポリモーフィズムには、静的または動的があります。 静的ポリモーフィズム 、関数への応答はコンパイル時に決定されます。 動的ポリモーフィズム 、実行時に決定されます。 静的ポリモーフィズム コンパイル時に関数とオブジェクトをリンクするメカニズムは、アーリー バインディングと呼ばれます。静的バインディングとも呼ばれます。 C# には、静的ポリモーフィズムを実装するための 2 つの手法が用意されています
オブジェクト指向プログラミングで最も重要な概念の 1 つは、継承です。継承により、別のクラスに関してクラスを定義できるため、アプリケーションの作成と保守が容易になります。これにより、コード機能を再利用して実装時間を短縮する機会も提供されます。 クラスを作成するとき、完全に新しいデータ メンバーとメンバー関数を記述する代わりに、プログラマーは、新しいクラスが既存のクラスのメンバーを継承する必要があることを指定できます。この既存のクラスはベースと呼ばれます クラスであり、新しいクラスは派生と呼ばれます クラス。 継承の考え方は IS-A を実装します 関係。たとえば、哺乳類 IS A 動物、犬
C言語