質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Q&A

解決済

1回答

1437閲覧

C# Queue<>に他クラスのメソッドを入れたい

akira.y

総合スコア3

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

0グッド

0クリップ

投稿2020/08/14 12:04

前提・実現したいこと

Unityでゲームを作ってみたい
Queue<>に他クラスのメソッドを入れたい

発生している問題・エラーメッセージ

引数 1: は 'メソッド グループ' から 'Skill' へ変換することはできません。 actionQueue.Enqueue(Skill.Slash); actionQueue.Enqueue(Skill.Fire); この2行で上記エラーメッセージが表示されています。

C#

1using System; 2using System.Collections.Generic; 3using System.Linq; 4using System.Text; 5using System.Threading.Tasks; 6 7namespace ConsoleApp2 8{ 9 class Program 10 { 11 static void Main(string[] args) 12 { 13 //Queueの中に他クラスのメソッドを入れたい 14 Queue<Skill> actionQueue = new Queue<Skill>(); 15 16 actionQueue.Enqueue(Skill.Slash); 17 actionQueue.Enqueue(Skill.Fire); 18 19 actionQueue.Dequeue(); 20 actionQueue.Dequeue(); 21 22 Console.ReadLine(); 23 } 24 } 25 26 class Skill 27 { 28 public void Slash() 29 { 30 Console.Write("剣で攻撃"); 31 } 32 33 public void Fire() 34 { 35 Console.Write("炎で攻撃"); 36 } 37 } 38} 39

試したこと

ネットで調べはしたものの、解決に至りませんでした。

補足情報(FW/ツールのバージョンなど)

プログラミングを学ぼうと思ってから日が浅く、根本的な理解が間違っているかもしれません。
そもそも、可能なのかもわからずここで質問してみることにしました。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

戻り値の無いインスタンスメソッドを格納する場合、Actionデリゲートに格納します。

C#

1class Test 2{ 3 public void Action() 4 { 5 // 処理 6 } 7} 8 9// 上記クラスがあった場合 10Test t = new Test(); 11Action a = t.Action(); 12 13//実行する場合 14a();

よって、Queueに入れる場合はQueue<Action>に入れればいいことになります。

C#

1//Queueの中に他クラスのメソッドを入れたい 2Queue<Action> actionQueue = new Queue<Action>(); 3 4Skill s = new Skill(); 5 6actionQueue.Enqueue(s.Slash); 7actionQueue.Enqueue(s.Fire); 8 9// 実行 10while (actionQueue.Count > 0) 11{ 12 Action a = actionQueue.Dequeue(); 13 a(); 14} 15 16Console.ReadLine();

投稿2020/08/14 12:54

YAmaGNZ

総合スコア10222

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

akira.y

2020/08/14 13:38

分かりやすい回答ありがとうございます。助かりました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問