コンストラクターとは?使用例を交えて説明(C#)

コンストラクターとは コンストラクターとは、クラスからインスタンスが生成された時に、最初に一度だけ呼び出されるメソッドのようなものです。 ただし、メソッドと違って、戻り値を指定する必要はありません(戻り値がないからといって、voidと書く必要もありません) コンストラクターは以下のような形で書きます。 アクセス修飾子 名前 (引数) { 処理文; } コンストラクターは必ず、クラスと同一の名称を指定する必要があります。 クラスが呼び出された時に、コンストラクターに書かれて処理が最初に行われるという性質上、フィールドの値の初期化に使われることが多いです。 ソースコード 実行結果 コンストラクターが呼び出されました 20 アクセス修飾子は基本的にpublicを指定してください(publi... 続きを読む

~Webサイトを自分で作ってみませんか?~

Webサイトを運営するにはサーバーが必須です。
このサイトは、エックスサーバー のサーバーを使用しています。
エックスサーバーは無料で10日間お試しができます。

自動実装プロパティとは?初期値の設定も含め解説(C#)

自動実装プロパティとは 自動実装プロパティは、以下のような形で記述されます。 データ型 プロパティ名 {get; set;}   以下のようにフィールドとプロパティが記述されたコードがあった場合を考えます。 private int _num; public int Num {   get { return _num; }   set { _num = value; } } 自動実装プロパティがあった場合、以下のように簡潔に書くことができます。 public int Num { get; set; } 自動実装プロパティを使えば、値を格納するためのフィールドを明示的に用意する必要がなくなります。(この場合、_numに相当するフィールドを明示的に宣言する必要がありません) こ... 続きを読む

アクセサーの制御(C#)

アクセサーの省略 プロパティは、getアクセサーとsetアクセサーの2つのアクセサーから通常は構成されます。 しかし、getアクセサーとsetアクセサーの両方を必ず用意しないというわけではありません。片方だけでも問題ありません。 getアクセサーのみであれば、読み取り専用プロパティとして振舞います。 setアクセサーのみであれば、書き込み専用プロパティとして振舞います。 ソースコード 実行結果 10 40 mc.Resultに対して、mc.Numのように値を代入しようとするとエラーになります。 逆に、mc.Numに対して、mc.Resultのように値を読み出そうとするとエラーになります。 アクセシビリティの設定 getアクセサーとsetアクセサーに対して、それぞれ異なるアクセシビリティを... 続きを読む

プロパティとは?プロパティの使用例(C#)

プロパティとは プロパティは、クラスの外部からフィールドにアクセスするときの窓口になります。 そのため、プロパティとフィールドはセットで使われることが多いです。 プロパティの基本形 プロパティの最も基本的な書き方は以下のようになります。 アクセス修飾子 データ型 プロパティ名 {   get { returnフィールド; }   set { フィールド= value; } } プロパティは、getアクセサーとsetアクセサーという2つのサクセサーから構成されています。 プロパティの値を知りたいときに、getアクセサーが呼び出されます。 逆に、プロパティに値を設定するときに、setアクセサーが呼び出されます。 ※プロパティを使用する側から見ると、あたかも、プロパティに値が代入されて... 続きを読む

フィールドとローカル変数を比較(C#)

フィールド 「フィールド」とは、クラス内に直接宣言されている変数を意味します。 ※「フィールド」は「メンバ変数」、「インスタンス変数」と呼ばれることがあります 「フィールド」はメソッドの外で、宣言されています。そのため、クラスから見てみると、メソッドと同じ階層に「フィールド」は存在します。 「フィールド」は、アクセス修飾子は指定しない場合、privateがデフォルトになります。 これまで、散々見てきたと思われる、メソッド内に宣言されている変数は、「フィールド」と区別して、「ローカル変数」と呼ばれることがあります。 「ローカル変数」は、そのメソッド内でしか有効ではありません。 一方、「フィールド」は、クラスのインスタンスが存在するまで有効で、複数のメソッド間で変数を共有する場合に便利です。 ※... 続きを読む

paramsを使って、引数の数を可変にする(C#)

paramsキーワード メソッドを定義する際は、引数を指定しますが、いくつの引数を取り扱うか予めわかっていない場合があります。 paramsを使うとメソッドの引数の数を可変として扱うことができます。 paramsキーワードがなければ、いったん配列を宣言して、その配列をメソッドに引き渡す必要性があります。 しかし、paramsキーワードを使えば、配列を宣言する手間が省けます。 paramsを使用しない場合 ソースコード 実行結果 リンゴ,みかん,桃,バナナ, paramsを使用する場合 ソースコード 実行結果 リンゴ,みかん,桃,バナナ, paramsキーワードの例 パラメーターリストに、paramsキーワード付きのパラメーター以外にもパラメーターを用意したい場合は、paramsキーワード... 続きを読む

「値渡し」と「参照渡し(ref、out)」(C#)

引数の渡し方 引数の渡し方には、「値渡し」と「参照渡し」の2つのパターンがあります。 「値渡し」とは、変数の値をコピーして、メソッドに渡すことを意味します。 メソッドに渡される値はあくまでコピーなので、メソッド内でコピーの値が変わったとしても、元の値に何も影響を与えません。 「参照渡し」とは、変数の参照情報を、メソッドに渡すことを意味します。 この場合、メソッドを呼び出す側と呼び出される側で、メモリー上の同じ領域を見ていることになります。 そのため、変数の値がメソッド内で変わった場合、メソッドの呼び出した側にも、その変更は反映されます。 値渡しの例 メソッドは、「値渡し」で基本的にやり取りされます。 ソースコード 実行結果 Plus5メソッド内での値は15 Plus5メソッド外での値は1... 続きを読む

メソッドを定義する際に、既定値を決めておく方法(C#)

省略可能な引数 メソッドにおいて、あらかじめ規定値(デフォルト値)を決めることができます。 その結果、メソッドを呼び出す時に、引数を省略することができます。 ※「省略可能な引数」は、「オプション引数」と呼ばれることもあります。 ソースコード 実行結果 年齢:0 名前:名無し 年齢:25 名前:名無し 年齢:25 名前:トニー 年齢:0 名前:トニー   定義したPersonalメソッドでは、age の規定値が「0」、 name の規定値が「”名無し”」となっています。 nameの方だけ規定値を使いたくない場合、「名前付き引数」をつかって、nameの値を指定してあげる必要があります。 このことから、規定値以外の値を使う可能性が高い引数ほど前に用意した方... 続きを読む

名前付き引数(C#)

名前付き引数とは 例えば、以下のようなPersonalメソッドを定義したとします。 static void Personal(int age, string name) { Console.WriteLine($”年齢:{age} 名前:{name}”); } このメソッドは、引数がint型、string型の順番に定義されています。 そのため、このメソッドを呼び出す時も、int型、string型の順番でないといけません。 Personal(17, “ボブ”); もしも、順番を逆にした場合は、エラーになります。 //エラー //Personal(“ボブ”, 17); しかし、引数がたくさんあるメソッドを扱う場合、引... 続きを読む

メソッドにおけるオーバーロード(C#)

オーバーロードとは? オーバーロードとは、「戻り値や引数は異なるが、名前は同じメソッドを複数定義する」ことを意味します。 ※オーバーロードを日本語に訳すとするなら「多重定義」です オーバーロードの簡単な例 ConsoleクラスのWriteLineメソッドは、オーバーロードされています。 ※上のようなコードを見たい場合は、まず、Visual Studio上で、Console.WriteLineと書いてカーソルをあてます。そのまま「F12」を押すと定義に移動します。 ソースコード 実行結果 test 12 3.45 WriteLineメソッドの引数がstring型だった場合、 WriteLine(string value); が使用されます。 一方で、引数がint型だった場合、 Writ... 続きを読む