tag:crieit.net,2005:https://crieit.net/boards/csharp-tutorial/feed 「C#チュートリアルのメモ」の投稿 - Crieit Crieitで「C#チュートリアルのメモ」ボードに投稿された最近の投稿 2021-07-29T17:28:55+09:00 https://crieit.net/boards/csharp-tutorial/feed tag:crieit.net,2005:PublicArticle/32fe01aeca4b8eb2bca22cf8e4c1f914 2021-07-28T16:39:15+09:00 2021-07-29T17:28:55+09:00 https://crieit.net/boards/csharp-tutorial/32fe01aeca4b8eb2bca22cf8e4c1f914 オブジェクト指向プログラミング <h2>学習内容</h2> <p><a target="_blank" rel="nofollow noopener" href="https://docs.microsoft.com/ja-jp/dotnet/csharp/fundamentals/tutorials/oop">オブジェクト指向プログラミング</a></p> <h2>口座クラスを継承</h2> <p>いろんな種類の口座を追加したいとき、BankAccountクラスをコピーして似たようなクラスを沢山作るのは大変なので継承を使う。</p> <h2>ポリモーフィズム</h2> <p>派生先の3種類の口座はすべて月末処理がある。しかしそのタスク内容は異なる。<br /> そこでポリモーフィズムを使用。<br /> - <code>virtual</code>キーワード:基底クラスに定義する。派生クラスでオーバーライドできる。オーバーライドするかどうかは任意。<br /> - <code>abstract</code>キーワード:基底クラスに定義する。派生クラスでオーバーライドできる。オーバーライドは必須。</p> <h2>ラムダ演算子</h2> <p><code>=></code>を使って式を定義できる</p> <pre><code>public override string ToString() => $"{fname} {lname}".Trim(); </code></pre> <p>これは以下の短縮形</p> <pre><code>public override string ToString() { return $"{fname} {lname}".Trim(); } </code></pre> <h2>readonlyキーワード</h2> <p><code>readonly</code>:オブジェクト構築後、この変数の値は変更できない</p> <h2>:this()式(コンストラクタチェーン)</h2> <p>コンストラクタに付与し、別のコンストラクタを呼び出す</p> <pre><code>public BankAccount(string name, decimal initialBalance) : this(name, initialBalance, 0) { } </code></pre> <p>↑ 2つの引数を受け取った場合、this式で以下のコンストラクタ(引数が3つ)を呼び出す</p> <pre><code>public BankAccount(string name, decimal initialBalance, decimal minimumBalance) { // 何かの処理 } </code></pre> <h2>protectedキーワード</h2> <p><code>protected</code>:派生クラスからのみ呼び出せる</p> <h2>メソッドの返り値にnullが含まれる可能性のあるとき</h2> <p>返り値の型のサフィックスに<code>?</code>をつける</p> <pre><code>protected virtual Transaction? CheckWithdrawalLimit(bool isOverdrawn){... </code></pre> <h2>三項演算子</h2> <p><a target="_blank" rel="nofollow noopener" href="https://qiita.com/mocotan/items/d115f746c73e1d3f2810">C#での条件分岐の書き方、省略した書き方、nullチェックの書き方のまとめ</a></p> <pre><code>条件文 ? trueの場合の処理 : falseの場合の処理 </code></pre> <p>お手本<br /> <a target="_blank" rel="nofollow noopener" href="https://github.com/dotnet/docs/tree/main/docs/csharp/fundamentals/tutorials/snippets/object-oriented-programming">https://github.com/dotnet/docs/tree/main/docs/csharp/fundamentals/tutorials/snippets/object-oriented-programming</a></p> same.__.same tag:crieit.net,2005:PublicArticle/20600dfd31068f0ae4f18be64cb823e3 2021-07-27T18:02:07+09:00 2021-07-28T16:08:43+09:00 https://crieit.net/boards/csharp-tutorial/20600dfd31068f0ae4f18be64cb823e3 クラスおよびオブジェクト <h2>学習内容</h2> <p><a target="_blank" rel="nofollow noopener" href="https://docs.microsoft.com/ja-jp/dotnet/csharp/fundamentals/tutorials/classes">クラスおよびオブジェクトを使用したオブジェクト指向プログラミングについて確認します</a></p> <h2>環境構築</h2> <p><a target="_blank" rel="nofollow noopener" href="https://blog.bltinc.co.jp/entry/2020/12/12/100000">こちら</a>を参考にVisual Studio for Macをインストール</p> <h2>プロジェクト作成</h2> <p><code>$ mkdir classes</code><br /> <code>$ cd classes</code><br /> <code>$ dotnet new console</code><br /> → classesディレクトリの中にファイルやディレクトリが作成される</p> <h2>BankAccount.cs</h2> <p>※ デフォルトだとclassesディレクトリの中にはProgram.csしか存在しない。<br /> 銀行口座クラスを作成する。<br /> クラスのメンバー<br /> ・プロパティ(データ要素)<br /> ・メソッド</p> <h2>預金と引き出し</h2> <p><a target="_blank" rel="nofollow noopener" href="https://docs.microsoft.com/ja-jp/dotnet/api/system.text.stringbuilder?view=net-5.0#StringAndSB">StringBuilderクラスは可変のString</a></p> same.__.same