FunctionalInstancePointerTest.cs
using System;
delegate void TestDlg();
public class Test
{
public void func1() { int a = 100; Console.WriteLine("a = {0}", a); }
public static void func2() { int a = 100; Console.WriteLine("a = {0}", a); }
public static void Main()
{
var obj1 = new Test();
var obj2 = new Test();
var f = new TestDlg(obj1.func1);
var g = new TestDlg(obj2.func1);
// 動的関数はインスタンスが異なると実体も異なる
Console.WriteLine("equal? = {0}", f == g); // False
f = new TestDlg(Test.func2);
g = new TestDlg(Test.func2);
// 静的関数の実体は1つだけ
Console.WriteLine("equal? = {0}", f == g); // True
}
}