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

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

~ギャンブルに絶対儲かる必勝法があるのだろうか?~

私(サイト主)はこの疑問に対して非常に興味を持ち、プログラミングで検証してみました。

このサイトを応援してもいいかなと思う人はぜひとも購入を検討してみてください。

ギャンブルの必勝法が本当に儲かるかプログラミングで検証してみた

自動実装プロパティとは?初期値の設定も含め解説(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... 続きを読む