C#の基礎知識編:C#のクラスと構造体(1)
1. 構造的および機能的特徴? コードを実装しますか?
構造体は struct キーワードを使用して定義されます。これはクラスと似ていますが、本質的な違いがあります。この構造体は本質的に値型であり、割り当ては必要ありません。
構造体の特徴:
(1) 構造体をパラメータとして渡す場合、値渡しとなります。
(2). 構造体のコンストラクターはパラメーターを受け取る必要があります。
(3). 構造体のインスタンス化には new は必要ありません。
(4). 構造は継承できませんが、インターフェースは実装できます。
(5). 構造体ではインスタンスフィールドを初期化できません。
例:
using System; using System.Collections.Generic; using System.Text; namespace TestStruct { class Program { public struct Circle //定义一个圆 { private const double pi = 3.1415926; public double radius; //半径 /// <summary> /// 构造函数 /// </summary> public Circle(double r) { radius = r; } /// <summary> /// 面积 /// </summary> public double CArea() { return 3.14 * radius * radius; } } static void Main(string[] args) { Circle circle1; //不用new实例化 circle1.radius = 5; Console.WriteLine("圆面积为:" + circle1.CArea()); Circle circle2 = new Circle(1); //用new实例化 Console.WriteLine("圆面积为:" + circle2.CArea()); Console.ReadLine(); } } }
2. 委任とは何ですか? 特徴? インターフェイスの代わりにデリゲートを使用するのはどのような場合ですか? デリゲートを宣言、インスタンス化、使用するにはどうすればよいですか?
(1). デリゲートはメソッドの型を定義するクラスであり、メソッドは別のメソッドのパラメーターとして使用できます。プログラム内で分岐を使用しないでください。
プログラムはよりスケーラブルになります。
例:
class Program { public delegate void PrinteDelegate(string name); private static void PrinteEnglish(string name) { Console.WriteLine("Your Name: " + name); } private static void PrinteChinese(string name) { Console.WriteLine("你的大名: " + name); } private static void Printe(string name, PrinteDelegate MakeGreeting) { MakeGreeting(name); } static void Main(string[] args) { Printe("Sam Young", PrinteEnglish); Printe("白杨树", PrinteChinese); Console.ReadLine(); } }
(2)、デリゲートは C++ 関数ポインターに似ていますが、タイプセーフです。
デリゲートを使用すると、メソッドをパラメータとして渡すことができます。
デリゲートを使用してコールバック メソッドを定義できます。
デリゲートは連鎖させることができます。たとえば、1 つのイベントで複数のメソッドを呼び出すことができます。
メソッドはデリゲートの署名と正確に一致する必要はありません。詳細については、共分散と反分散を参照してください。
C# バージョン 2.0 では、個別に定義されたメソッドの代わりにコードのブロックを引数として渡すことができる匿名メソッドの概念が導入されました。
デリゲートを使用します。異なるメソッドを呼び出すために分岐する必要がある場合に使用する必要があると思います。ただし、たとえば、ファクトリ パターンでは、ブランチに応じて異なるクラスがインスタンス化されます。この場合、インターフェイスが使用されます。
デリゲートはメソッドの型を定義するクラスであり、メソッドを別のメソッドのパラメータとして渡すことができるため、メソッドをパラメータに動的に割り当てるこの方法により、プログラム内での問題を回避できます。 If-Else (Switch) ステートメントを使用すると、プログラムのスケーラビリティも高まります
。
3. 部分カテゴリ/サブカテゴリとは何ですか? どのような特徴がありますか? コードを実装しますか? アプリケーション? 従う必要のあるルールはいくつありますか?
部分クラスは、partial キーワードを使用してクラスを複数の独立したファイルに分割しますが、本質的には 1 つのクラスです。一般に、クラスの行が多すぎる場合、または一部の関数が比較的独立している場合、最も一般的なクラスは Form.cs と Form.designer.cs です。一般に、次のルールに従う必要があります:
(1)、部分キーワードを使用する必要があります
(2)、異なる部分がありますが、各部分はパブリック、プライベートなど、同じアクセシビリティを持つ必要があります。
(3) 、いずれかの部分が抽象およびシールとして宣言されている場合、型全体は抽象およびシールされているとみなされます
(4) いずれかの部分が基本クラスを継承するように宣言されている場合、型全体がクラスを継承します
( 5) 各パーツは異なる基本インターフェイスを指定でき、最終的な型はすべてのパーツ宣言にリストされているすべてのインターフェイスを実装します
(6)。特定のパーツ定義で宣言されたクラス、構造体、またはインターフェイス メンバーは、他のすべてのパーツで使用できます。
(7) 入れ子になっている型自体が部分的でなくても、入れ子になった型は部分的になる可能性があります。
上記は C# の基礎知識をまとめたものです: C# のクラスと構造体 (1) 関連コンテンツについては、PHP 中国語 Web サイト (www.php.cn) に注目してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









C# を使用した Active Directory のガイド。ここでは、Active Directory の概要と、C# での動作方法について、構文と例とともに説明します。

C# データ グリッド ビューのガイド。ここでは、SQL データベースまたは Excel ファイルからデータ グリッド ビューをロードおよびエクスポートする方法の例について説明します。

マルチスレッドと非同期の違いは、マルチスレッドが複数のスレッドを同時に実行し、現在のスレッドをブロックせずに非同期に操作を実行することです。マルチスレッドは計算集約型タスクに使用されますが、非同期はユーザーインタラクションに使用されます。マルチスレッドの利点は、コンピューティングのパフォーマンスを改善することですが、非同期の利点はUIスレッドをブロックしないことです。マルチスレッドまたは非同期を選択することは、タスクの性質に依存します。計算集約型タスクマルチスレッド、外部リソースと相互作用し、UIの応答性を非同期に使用する必要があるタスクを使用します。
