FROM ME TO YOU

oh my bizarre life !!

UdemyでC#プログラミング基礎を受講してみた

体系立ててC#を学びたいなと思っていたところ、Udemyで富士通ラーニングメディアさんのC#プログラミング基礎講座が1500円だったので購入してみました。

https://www.udemy.com/c-lhmejv/learn/v4/overview

103のレクチャーで全部で7 時間。 一通り受講し終わったのでメモ。

.NETの基礎からオブジェクト指向のさわりまで、まさに基礎!といった範囲でした。 字幕がついてたのと、再生スピードも倍速まで調整できるので、知っていることは早送りし、知らない所は一時停止しながら手を動かしつつ…という感じで進められたのがよかったですね。

知っていること7割、知らないこと3割といった感じでしたが、価格もお手頃だったので購入してよかったと思いました。

同じシリーズでラムダ式とかLINQとかの拡張版もやってほしいなぁ…w

以下は気付いたことをメモしてたやつ。備忘録。

1.2.5 名前空間とは

  • クラスライブラリを機能別に分類したもの
  • フォルダー分けしているイメージ

1.2.6 プログラム実行の流れ

2.1.1 C#におけるコードブロック

  • 名前空間ブロック、クロスブロック、メソッドブロック

2.5.4 値型と参照型

  • String,Object,配列,クラス型は参照型
  • Stringなどはデータ量が予測できないためメモリが動的に変動するから

2.5.5 データ型の変換

  • Castは似たデータ型の変換に使う。整数から少数にするなど
  • 文字から数値にする場合などはParseを使う

デバッグ

  • ステップイン…F11
  • ステップオーバー…外部のメソッドはスキップできる F10
  • 右クリックしてウォッチウィンドウに追加できる

3.1.3 クラスとは

  • フィールドやメソッドを総称してメンバーと呼ぶこともある

3.1.4 インスタンス

3.2.1 オブジェクト指向の3大要素

3.2.2 カプセル化

  • オブジェクトのフィールドに直接アクセスするのではなく、メソッド経由でフィールドに変更をかける

3.2.3 継承

  • 継承元:基本クラス
  • 継承して作成したクラス派生クラス

ポリモーフィズム

  • 呼び出し名は同じだが結果が異なる

4.2.2 クラス プロパティについて

  • フィールドにアクセスするための特殊なメソッドをプロパティと呼ぶ

4.2.3 自動実装プロパティ

  • 入力チェックや初期値を指定する場合は自動実装プロパティは利用できないため、フィールドとプロパティを別で記述する

4.5.2 メソッドの種類

4.6 オーバーロード

  • 同名のメソッドでも引数の数が異なる

4.7.2 コンストラクターイニシャライズ

  • コンストラクターから同じクラス内の同じコンストラクターを呼び出したい場合に使う
  • クラスの生成側には改修をかけずに、クラス側で引数を増やすことで同名のメソッドでも別の動作を行う事ができる。

4.8.1 静的メンバー

4.8.2 静的メンバーの定義

  • public static string str;

4.8.3 静的メソッド

  • staticをつける
  • 参照できるのは静的フィールドや静的メソッドのみ

4.8.4 静的メンバーへのアクセス

  • newしない
  • Class.class()のようにクラスへ直接アクセスする
  • 例えばMessageBox.Show("ほげほげ")も静的メンバー(Messageboxクラス)へのアクセス!

5.1.1 継承の実践

  • 継承元を基本クラス、継承して作成したクラスを派生クラスと呼ぶ
  • 汎用的な機能を基本クラスにもたせ、複雑な機能を派生クラスに持たせるように設計すると無駄が省ける
  • 多重継承はできない

5.2.3 オーバーライド

  • 基本クラスのメソッドと同名のメソッドを派生クラスで定義することで上書きしてしまうこと
  • オーバーロードとは違う(こちらは同クラス内で引数違いで同名のメソッドを定義すること)
  • 基本クラス側にVirtualをつける、派生クラス側にoverrideと記述する
  • 戻り値の型は同じでなければならない
  • base.methodname()で基本クラスのメソッドの戻り値を利用することもできる

6.1 ポリモーフィズムの実現方法

  • 同じ命令(メソッド、プロパティ)を使って、違う内容のものにアクセスする

6.2 抽象クラス

  • 型を定義しただけで実装を伴わないメソッドなどを含むクラス
  • 実装を伴わないメソッドというのは、メソッド名や戻り値、引数だけを定義してあげて、内部の処理はまったく書かない、まったく定義しないというメソッド
  • 抽象クラス側で定義したメソッドは派生クラス側で必ず実装しないといけない(強制できる)
  • 抽象クラスはインスタンスが生成できない
  • classの直前にabstractというキーワードを付ける
  • 【用途がイメージできていない】

6.3 インターフェース

  • 空のメソッドの集まり
  • インターフェースは「継承する」ではなく「実装する」となる
  • 継承は複数のクラスを継承できないが、インターフェースは複数のインターフェースを実装できる
  • インターフェイス名は習慣的に先頭にIを付けたりとか、最後に何々ableというふうに終わることが多いです
  • メソッドを統一することで統一的なオブジェクトを作成することができる
  • 抽象クラスは具体的なメソッドやフィールドは定義できるが、インターフェースは空のメソッドのみしか定義できない

7.1.5 例外のスロー

        catch(FormatException fe)
        {
            MessageBox.Show(fe.Message);
            throw fe
        }
  • で元のメソッドにエラーオブジェクトを返えせる