こんにちわ! ひつじ!人間です。
今日は羊さんならぬ女の子のフリでやるわ。
今回はアタシのC#勉強法を紹介するわ!
次回の記事
sheephuman.hatenablog.com
ちょっとメンドウだけど、難しいコードも理解できるようになるわ!
準備するもの
・Visual Studio(新しいもの)
・移植用のソースコード
追記 DataGridViewのRedo Undoを実現するサンプルです。 割と中身が複雑です。
ツイート版
Csharp 移植作業。
— ひつじ人間 (@sheephuman) 2020年6月12日
複雑なプログラムはこのように、空のプロジェクトファイルに手作業で移植作業を行うことで把握してます。
まあかなりメンドクサイけど。 pic.twitter.com/UHBTICwjLD
見やすい?のでこちらでもいいわ!
やり方
1.Visual Studioを2つ分起動させる
2.外観をコピー
Ctrlを押しながら各コントロールをクリックすることで、全てのコントロールを選択状態に出来るのよ。
コピーして、張り付け。外観を似せるだけならそんなに時間はかからないわ。
〇ッキリ〇クスチャーね
3.メンバ変数の定義
ここからいよいよ実装に入るわ。
まずは
private Restaurant _dataobject; private Stack<Restaurant> _undostack; private Stack<Restaurant> _redostack;
を貼り付けるのよ。基礎的な構文さえ把握しておけば、丸暗記する必要もないわ。
エラーが出てるけど、落ち着いて。これはclass
ソリューションエクスプローラーのWindows FormApplication [数字]を右クリック
新しい項目 →classを追加
ファイル名は任意のもので問題ないわ。
その場合はclass名は変更しておく必要があるの。名前を変更したい箇所で右クリック「名前を変更」で書き換えればいいわ
このやり方は覚えておくといろいろと便利よ。
一度errorを解消して紐づけてしまえば、今度はclass名と変数宣言の型名を一括で書き換えたりも出来るの
こんな感じね。別のファイルであっても問題なく適用されるわ。
4.class内部を実装する
ここからは駆け足よ。前と同じように、メンバ変数から貼り付けていき、エラーが出ているものと同名のclassを定義して、エラーを消していくの
赤い波線が出ているところにカーソルを合わせると、自動でリファクタリング出来るから、いずれかを選べばいいわ。今回は「class HealthScoreを生成する」を選んでおいたわ。
public event RestaurantChangedEventHandler Changed; のエラーはリファクタリング機能では直せないわね。オリジナルからコピペ実装するわ。
public delegate void RestaurantChangedEventHandler(object sender, RestaurantChangedEventArgs e);
この辺は覚えるために手打ちするのも良いかも知れないわね。まあ似たようなイベントを自分で組む方が覚えが早いんだけど
これを修正するためには、オリジナルの同じ個所を見て
右クリックメニュー→「定義へ移動」機能を利用するの。
ここから同じように実装作業をしていくわ。
RestaurantChangedEventArgsの大本は同名のclassがある事が分かったので、順次入れていくわ。
public class RestaurantChangedEventArgs : EventArgs {//何らかの処理 }
大事なのは、外堀から埋めることよ。一つ一つ丁寧にやっていかないと覚えないわ。
また同様にメンバ変数 → 実装と進んでいきましょう。次はメソッド定義ね
超めんどくさい
これはさっきのリファクタリング機能で自動生成したものよ。これにオリジナルからコピペするの
ここで大切なのは、コピペするだけじゃなく読んでいく事ね。処理の流れを頭の中に描いていくの。
エラーをリファクタリング機能で埋めたわ。自動生成のコードをちょっと手直しするだけで、数分で実装出来るわ。
こうやって、エラーを消しながら実装していく事で、理解を深めながら学ぶことが出来るわ。
とりあえず長くなったので今日はここまでね。ビルドは通るけど、実装はまだ殆ど空なので、何も出来ないわね。
ま、ここまで出来れば上出来だと思うわ。 ちなみに、アクセサリビリティ-public の設定も必要だったわ。