C# デリゲートについて

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
アバター
keito94
記事: 264
登録日時: 7年前
連絡を取る:

C# デリゲートについて

#1

投稿記事 by keito94 » 7年前

只今、C#のデリゲートについて学んでいるのですが、delegateと宣言するとデリゲートが使えるということはわかったのですが…。
最初のコードでは整数型を宣言しているのに、

コード:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

delegate void SomeDelegate(int a);
namespace CSharpTraning
{
    class Program
    {
        public static void Main(string[] args)
        {
            SomeDelegate a = A;
            a(256);
        }
        static void A(int n)
        {
            Console.WriteLine("Aが呼ばれました。");
        }
    }
}
2番めのコードではなぜ整数型を宣言していないのでしょうか?

コード:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

delegate void ShowMessage();

class Person
{
    string name;
    public Person(string name) { this.name = name; }
    public void ShowName() { Console.Write("名前:{0}\n", name); }
}

namespace CSharpTraning
{
    class Program
    {
        public static void Main(string[] args)
        {
            Person p = new Person("夜刀神十香");
            ShowMessage show = new ShowMessage(p.ShowName);
            show();
        }
    }
}
デバッグは投げ捨てるものではない。
今までの質問でこれは学んだこと。
質問する時は、必ずちゃんと調べた上に問題をもとにした仕様書を作ってから質問すること。
仕様書の大切さを改めて思い知った…。

YuO
記事: 947
登録日時: 13年前
住所: 東京都世田谷区

Re: C# デリゲートについて

#2

投稿記事 by YuO » 7年前

単純に,対応するメソッドの形が,
  • 前者はint型の引数を持ち,値を返さないメソッド
  • 後者は引数を持たず,値を返さないメソッド
だからです。それにあわせて,
  • 前者のデリゲートで呼び出されるメソッドCSharpTraning.Program.Aはint型の引数を持ち,値を返さない
  • 後者のデリゲートで呼び出されるメソッドPerson.ShowNameは引数を持たず,値を返さない
となっています。

アバター
keito94
記事: 264
登録日時: 7年前
連絡を取る:

Re: C# デリゲートについて

#3

投稿記事 by keito94 » 7年前

意外と単純なんですね。ありがとうございました。
デバッグは投げ捨てるものではない。
今までの質問でこれは学んだこと。
質問する時は、必ずちゃんと調べた上に問題をもとにした仕様書を作ってから質問すること。
仕様書の大切さを改めて思い知った…。

返信

“C言語何でも質問掲示板” へ戻る