20220111のC#に関する記事は3件です。

オーバーライドってなに?

オーバーライドとは? オブジェクト指向におけるオブジェクトの継承の話で出てくる用語のひとつであり、 親クラスにあるメソッドを子クラスで再定義することによって、子クラス上で親クラスのメソッドを上書きすることです。 わかりずらいと思うので、例を挙げて考えていきましょう。 家族を用いた例 母、兄、弟の3つのクラスを用意します。 そして、母クラスを親クラス、兄クラスと弟クラスを子クラスとします。 子クラスの兄クラスと弟クラスは、親クラスの母クラスを継承して生成されました。 母クラスに「食事」というメソッドがあったとします。 そのメソッドには「何でも食べる」と書いてあったので、それを受け継いだ兄と弟も「食事」が実行されると何でも食べます。 ある日、兄はyoutubeで食用として養殖された牛が残虐に殺害される映像を見たことをきっかけにヴィーガンに転生してしまいました! ヴィーガンになった兄は野菜しか食べることができなくなったので、兄の「食事」メソッドを書き換えます。 書き換え方は、兄クラスに母クラスのメソッドと同様の名前である「食事」メソッドを作成し、そのメソッドに「野菜だけ食べる」というように記述します。 そして、「食事」を実行すると母と弟は今まで通りなんでまたべますが、兄は野菜しか食べなくなります。 このように、親クラスから受け継がれたメソッドを子クラスで書き換えることをオーバーライドといいます! コードを書いてみる 上で挙げた例に従ってコードを書いてみます。使う言語はc#です。 //親クラスの母を作る class MAMA { public virtual void syokuji() { return "なんでも食べる"; } } //子クラスの兄を作る class ANI : MAMA { //母のsyokujiメソッドをオーバーライド public override void syokuji() { return "野菜だけ食べる"; } } //子クラスの弟を作る class OTOUTO : MAMA { } class OverriseTest { static void main() { MAMA mam = new MAMA(); ANI ani = new ANI(); OTOUTO oto = new OTOUTO(); //母の結果 Console.WriteLine(mam.syokuji()); //兄の結果 Console.WriteLine(ani.syokuji()); //弟の結果 Console.WriteLine(oto.syokuji()); } } このように書きます。実行結果は次のようになります。 何でも食べる 野菜だけ食べる 何でも食べる c#でオーバーライドをするには、親クラスのメソッドに「virtual」、子クラスのメソッドに「override」と記述する必要があります。 今回のコードだとMAMAクラスのsyokujiメソッドに「virtual」、ANIクラスのsyokujiメソッドに「ovarride」を付けました。 まとめ もう疲れたのでこの辺にしときます。 バイト頑張る。以上
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

C# WinForms + GMap.NET で地図アプリ。(20日目) 

Kotlinの地図アプリが煮詰まってきたので、今度は、Windows用の地図アプリを作成。 今回は、GMap.NETを使ってみました。 Visual Studioのインストールからやっていきます。 Visual Studio Commnutiy 2022 Visual Studio Commnutiyをインストール GMap.NETのプロジェクト読込 GitHUBからダウンロードしたZIPファイルを解凍してプロジェクトを読込。 パッケージマネージャー コンソールを使用してパッケージをインストール READMEに従って、Visual Studioのパッケージマネージャーからインストール PM> Install-Package GMap.NET.Core PM> Install-Package GMap.NET.WinForms PM> Install-Package GMap.NET.WinPresentation ERROR:対象フレームワークがインストールされていません 実行すると「対象フレームワークがインストールされていません」というERROR ダイアログに従ってネットからダウンロードしてインストールしても解決せず。 解決方法 [ツール] ->[ツールと機能を取得] ->[個別コンポーネント] ->[.net framework 4.6 Targeting Pack] 警告はある物の無事解決? サンプルを修正して起動 試しに、サンプルコードの経度・緯度を、大阪府庁に変更。 実行画面: マーカーを作成 クリックイベントで、マーカーを作成。 Form1.cs private void button1_Click(object sender, EventArgs e) { GMap.NET.WindowsForms.GMapOverlay markers = new GMap.NET.WindowsForms.GMapOverlay("markers"); GMap.NET.WindowsForms.GMapMarker marker = new GMap.NET.WindowsForms.Markers.GMarkerGoogle( new GMap.NET.PointLatLng(34.686397317919905, 135.51971443629935), GMap.NET.WindowsForms.Markers.GMarkerGoogleType.blue_pushpin); markers.Markers.Add(marker); 実行結果: 参考サイト
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

スクリプトエディタ拡張した際に[script]を復活させる

初めに スクリプトエディタ拡張すると[script]が消えてしまいます。 シングルクリックで、Projectウィンドウでスクリプトの位置を教えてくれたり ダブルクリップで、指定のエディタが開いてくれる。 これが便利でよく使うのですが、エディタ拡張するとこれが消えてしまうので 復活させたい。 Unity Answersに答えが! 調べてみると、Unity Answersに同じように質問して答えてもらっている! スクリプト EditorGUI.BeginDisabledGroup(true); EditorGUILayout.ObjectField("Script", MonoScript.FromMonoBehaviour((MonoBehaviour)target) , typeof(MonoScript), false); EditorGUI.EndDisabledGroup(); お!復活した!! 自分で復活させているので、好きな文字を表示できる! 最後に スクリプトの位置がわかったり、ダブルクリップするとエディタが開く動作は開発していると 結構使うので、らくちんになったは!
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む