C#

... 続きを読む

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

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

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

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

フィールドとローカル変数を比較(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... 続きを読む

メソッドとは何か?具体例を交えながら説明(C#)

メソッドとは? メソッドとは、数学でいうところの関数に相当するものです。 例えば、以下のような関数を考えてみます f(x)=x2+2x+1 xが0の時、f(0)は1です。 xが1の時、f(1)は4です。 xが2の時、f(2)は9です。 ここで、パラメーターのxは、プログラムでは「引数」と呼ばれます。 また、結果であるf(x)は、プログラムでは、「戻り値」と呼ばれます。 f(x)=x2+2x+1という「引数」と「戻り値」の関係を定めている関数が「メソッド」に相当します。 ※戻り値のことを「返り値」、「返却値」、「return値」と呼ばれることがあります。 言い換えると以下のようにまとめられます。 「引数」は、インプットに相当します。 「戻り値」は、アウトプットに相当します。 「メソ... 続きを読む

Stopwatchクラスで、時間を測定する方法(C#)

はじめに C#において、時間を測定する方法はいくつか考えられます。 例えば、System.DateTime.Nowを使用して、処理が始まった時と処理が終わった時の時刻の差を引き算して求めるなど考えられます。 しかし、この方法は精度がよろしくありません。 他にもいくつかの手法が考えられますが、Stopwatchクラスを使用するのが手軽で、かつ精度がある方法でしょう。 Stopwatchクラスを使えば、その名の通り、ストップウォッチの動きに相当するプログラムを簡単に作成できます。 その他の用途として、自分の作ったアルゴリズムのスピードを調べる時などに使います。 ※アルゴリズムのスピードを調べる際は、自分のパソコンの裏で動いているアプリケーションを可能な限り止めないと、結果がばらつきます。結果がぶ... 続きを読む

DateTime型で足し算・引き算を行う方法(C#)

はじめに DateTime型とDateTime型を直接足し算することはできません。 詳しい理由はよくわかりませんが、単純に意味のある値にならないからでしょうか。 例えば、2000年6月と2030年3月を足し算することを考えます。 結果は、4030年の9月になりますが、このような計算を実際の業務ですることは皆無です。 とはいえ、DateTime型で表現されている値の10日後の日付を得たいという欲求はあるでしょう。 このような状況を解決する方法は主に2つあります。 1:時間間隔を意味するTimeSpan型を使用 2:DateTime型で用意されているメソッドを使用する TimeSpan型の使用 TimeSpan型は時間間隔を扱います。 以下のような計算パターンが許されます。 TimeSpan... 続きを読む

TimeSpan型の書式指定をする方法と注意点(C#)

簡単な具体例 TimeSpan型を文字に変換する際に、書式を指定できます。 実行結果 01:09:45 ToStringメソッドで書式指定を行って、文字列型として表示しています。 注意点 DateTime型とTimeSpan型の書式指定子の違い DateTime型で使われる日時の書式指定子と、TimeSpan型で使われる時間間隔の書式指定子は似通っています。 例えば、秒を指定する指定子はともにss(s)を使用します。 しかし、異なる部分もあります。 最も大きな違いは、書式指定子として用意されていない文字に対する挙動です。 書式指定子として用意されていない文字に対して、DateTime型は、単なる文字として解釈しようとします。 それに対し、TimeSpan型は、書式指定子として解釈しようとし... 続きを読む

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

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

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

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