自分のブログ名

sheephumanのブログ

ひつじ好きな人間のブログ。

アタシのC#勉強法(ソースコード移植法)1

 

 

 こんにちわ! ひつじ!人間です。

今日は羊さんならぬ女の子のフリでやるわ。

今回はアタシのC#勉強法を紹介するわ!

次回の記事
 
sheephuman.hatenablog.com



ちょっとメンドウだけど、難しいコードも理解できるようになるわ!

 

  

 

 


レイラ(ガッシュ)

レイラ(ガッシュ

   

www.amazon.co.jp

 

 

 

準備するもの

 ・Visual Studio(新しいもの)

 ・移植用のソースコード

www.codeproject.com

追記 DataGridViewのRedo Undoを実現するサンプルです。 割と中身が複雑です。

ツイート版



 

  見やすい?のでこちらでもいいわ!

 

やり方

1.Visual Studioを2つ分起動させる

2.外観をコピー

Ctrlを押しながら各コントロールをクリックすることで、全てのコントロールを選択状態に出来るのよ。

 

 

 

コピーして、張り付け。外観を似せるだけならそんなに時間はかからないわ。

〇ッキリ〇クスチャーね

 

 

 

3.メンバ変数の定義

 ここからいよいよ実装に入るわ。

まずは

  private Restaurant _dataobject;
  private Stack<Restaurant> _undostack;
  private Stack<Restaurant> _redostack;

f:id:sheephuman:20200612195105p:plain

を貼り付けるのよ。基礎的な構文さえ把握しておけば、丸暗記する必要もないわ。 

エラーが出てるけど、落ち着いて。これはclassが定義されてないから起きるerrorなの。 

ソリューションエクスプローラWindows FormApplication [数字]を右クリック

 f:id:sheephuman:20200612193742p:plain

 新しい項目 →classを追加f:id:sheephuman:20200612194331p:plain

ファイル名は任意のもので問題ないわ。 

その場合はclass名は変更しておく必要があるの。名前を変更したい箇所で右クリック「名前を変更」で書き換えればいいわ

 f:id:sheephuman:20200612194728p:plain

このやり方は覚えておくといろいろと便利よ。

一度errorを解消して紐づけてしまえば、今度はclass名と変数宣言の型名を一括で書き換えたりも出来るの

f:id:sheephuman:20200612195105p:plain

こんな感じね。別のファイルであっても問題なく適用されるわ。

4.class内部を実装する

ここからは駆け足よ。前と同じように、メンバ変数から貼り付けていき、エラーが出ているものと同名のclassを定義して、エラーを消していくの

f:id:sheephuman:20200612200247p:plain

赤い波線が出ているところにカーソルを合わせると、自動でリファクタリング出来るから、いずれかを選べばいいわ。今回は「class HealthScoreを生成する」を選んでおいたわ。

public event RestaurantChangedEventHandler Changed; のエラーはリファクタリング機能では直せないわね。オリジナルからコピペ実装するわ。

f:id:sheephuman:20200612200513p:plain

public delegate void RestaurantChangedEventHandler(object sender, RestaurantChangedEventArgs e);

この辺は覚えるために手打ちするのも良いかも知れないわね。まあ似たようなイベントを自分で組む方が覚えが早いんだけど

これを修正するためには、オリジナルの同じ個所を見て

f:id:sheephuman:20200612201337p:plain

右クリックメニュー→「定義へ移動」機能を利用するの。

ここから同じように実装作業をしていくわ。

RestaurantChangedEventArgsの大本は同名のclassがある事が分かったので、順次入れていくわ。

 public class RestaurantChangedEventArgs : EventArgs
    {//何らかの処理  } 

大事なのは、外堀から埋めることよ。一つ一つ丁寧にやっていかないと覚えないわ。

 

また同様にメンバ変数 → 実装と進んでいきましょう。次はメソッド定義ね

f:id:sheephuman:20200612202258p:plain

超めんどくさい

これはさっきのリファクタリング機能で自動生成したものよ。これにオリジナルからコピペするの

f:id:sheephuman:20200612202459p:plain

ここで大切なのは、コピペするだけじゃなく読んでいく事ね。処理の流れを頭の中に描いていくの。

f:id:sheephuman:20200612203415p:plain

エラーをリファクタリング機能で埋めたわ。自動生成のコードをちょっと手直しするだけで、数分で実装出来るわ。

こうやって、エラーを消しながら実装していく事で、理解を深めながら学ぶことが出来るわ。

f:id:sheephuman:20200612204750p:plain

とりあえず長くなったので今日はここまでね。ビルドは通るけど、実装はまだ殆ど空なので、何も出来ないわね。

ま、ここまで出来れば上出来だと思うわ。 ちなみに、アクセサリビリティ-public の設定も必要だったわ。

次回の記事
sheephuman.hatenablog.com