LoginSignup
0

More than 5 years have passed since last update.

動的関数の実態はインスタンスの数だけ存在する?

Last updated at Posted at 2013-06-01
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
    }
}

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0