C#でクラスの概念を説明する
クラスは、C#の必須タイプの1つです。クラスは、問題のドメインに関連するオブジェクトの青写真と考えることができます。これは、オブジェクトを作成するためのテンプレートであり、このクラスから作成されたオブジェクトのセットによって共有される構造と動作を定義します。簡単に言うと、クラスはCookieカッターであり、オブジェクトはCookie自体です。
クラスは、オブジェクト指向プログラミングの重要な概念であるカプセル化も可能にします。これは、データとデータを処理する操作を1か所で組み合わせ、そのオブジェクトのユーザーにシンプルなAPIを提供することを意味します。クラスを使用すると、データをカプセル化し、無関係な詳細を他のクラスから隠すことができます。
classキーワードに続けてクラス名を使用して、クラスを作成できます。
// User.cs public class User{ private string name; private int salary; public void Promote(){ salary += 1000; } }
上記の例では、Userはユーザーを表すクラスです。クラスは2つのデータをカプセル化します-name および給与 。これらはクラスフィールドと呼ばれ、ユーザーの名前と給与を保持します。 Promote()という名前のメソッドもあります 、これによりユーザーの給与が上がります。
各クラスには、そのクラスが他のクラスに表示されるかどうかを制御するアクセス修飾子が関連付けられています。アクセス修飾子に提供できる5つの可能な値は次のとおりです。
Access Modifier | 説明 |
---|---|
public | 無制限のアクセス |
保護 | 派生クラスへの制限付きアクセス |
内部 | アセンブリへのアクセスが制限されています |
保護された内部 | アセンブリまたは派生クラスへのアクセスが制限されています |
プライベート | 外部からのアクセスはありません |
クラスのインスタンスを作成するには、 newを使用できます キーワード。 新しい 演算子は、オブジェクトのデータに必要なバイト数を計算し、オブジェクトにメモリを割り当てます。次に、新しく作成されたオブジェクトへのポインタ(参照とも呼ばれます)を返します。
var alice = new User(); var bob = new User();
この参照は、=記号の左側にある変数に格納されます。上記の例では、アリスとボブは新しく作成されたオブジェクトへの参照またはポインターを保持しています。
C#では、クラスの命名規則は、複合語の各単語の最初の文字を大文字にするPascalCaseに従います。 StringBuilder、UserControllerなど。名前がクラス名と一致するファイルにクラスを作成する必要はありません。ただし、これはほとんどのC#プロジェクトで使用されている規則です。
コンストラクター
上記の例では、Userクラスのインスタンス、つまりaliceとbobを作成したときに、それらの初期名と給与を提供しませんでした。多くの場合、新しく作成されたオブジェクトはその仕事をするためにいくつかの情報を必要とし、コンストラクターはクラスデータを初期化するために使用されます。
次のように、コンストラクターを追加して、ユーザーに名前と給与を与えることができます-
public class User{ private string name; private int salary; public User(string name, int salary){ this.name = name; this.salary = salary; } public void Promote(){ salary += 1000; } }
コンストラクターがあると、新しいインスタンスを作成するときにユーザーの名前と給与を渡すことができます。
var alice = new User("Alice", 50000); var bob = new User("Bob", 45000);
1つのクラスに複数のコンストラクターを含めることができます。複数のコンストラクターがあると、さまざまな方法でクラスを初期化できます。たとえば、ユーザーの名前だけを受け取り、デフォルトの給与を割り当てる別のコンストラクターを追加できます。
public User(string name){ this.name = name; this.salary = 50000; }
例
using System; class Program{ static void Main(){ var alice = new User(); alice.Print(); var bob = new User(); bob.Print(); var chris = new User("Chris", 50000); chris.Print(); var debs = new User("Debs", 45000); debs.Print(); var scott = new User("Scott"); scott.Print(); } } public class User{ private string name; private int salary; public User(){ } public User(string name){ this.name = name; this.salary = 50000; } public User(string name, int salary){ this.name = name; this.salary = salary; } public void Promote(){ salary += 1000; } public void Print(){ Console.WriteLine($"{name}: {salary}"); } }
出力
: 0 : 0 Chris: 50000 Debs: 45000 Scott: 50000
-
Cプログラミングにおけるポインターの配列とポインターからポインターへの概念を説明する
ポインタの配列 他のデータ型と同様に、ポインタ配列を宣言することもできます。 宣言 datatype *pointername [size]; たとえば、int * p [5]; //5つの整数要素アドレスを保持できるポインタの配列を表します 初期化 「&」は初期化に使用されます たとえば、 int a[3] = {10,20,30}; int *p[3], i; for (i=0; i<3; i++) (or) for (i=0; i<3,i++) p[i] = &a[i]; p[i] = a+i; アクセス アクセスには間接演算子(*)を使用します。
-
C言語でのポインタアクセスの概念を説明する
ポインタは、他の変数のアドレスを格納する変数です。 ポインタの宣言、初期化、アクセス 次のステートメントを検討してください- int qty = 179; ポインタの宣言 int *p; 「p」は、別の整数変数のアドレスを保持するポインタ変数です。 ポインタの初期化 アドレス演算子(&)は、ポインタ変数を初期化するために使用されます。 int qty = 175; int *p; p= &qty; 文字列の配列内の要素にアクセスする際にポインタがどのように役立つかの例を考えてみましょう。 このプログラムでは、特定の場所に存在する要素にアクセスしようとしています。操