C# デリゲートについて

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら

トピックに返信する


答えを正確にご入力ください。答えられるかどうかでスパムボットか否かを判定します。

BBCode: ON
[img]: ON
[flash]: OFF
[url]: ON
スマイリー: OFF

トピックのレビュー
   

展開ビュー トピックのレビュー: C# デリゲートについて

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

#3

by keito94 » 8年前

意外と単純なんですね。ありがとうございました。

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

#2

by YuO » 8年前

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

C# デリゲートについて

#1

by keito94 » 8年前

只今、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();
        }
    }
}

ページトップ