Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/333.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 为什么在c中使用委托会产生stackoverflowexception_C#_Delegates - Fatal编程技术网

C# 为什么在c中使用委托会产生stackoverflowexception

C# 为什么在c中使用委托会产生stackoverflowexception,c#,delegates,C#,Delegates,当我遇到代表时,我写了这个非常简单的程序只是为了练习。当我运行它时,有一个stackoverflowexception。所以,如果有人能告诉我这段代码有什么问题,请告诉我,因为我已经浪费了很多时间试图让它工作,但不能。 代码如下: using System; public delegate void click(); class test { public click flare; public double length; public double Length

当我遇到代表时,我写了这个非常简单的程序只是为了练习。当我运行它时,有一个stackoverflowexception。所以,如果有人能告诉我这段代码有什么问题,请告诉我,因为我已经浪费了很多时间试图让它工作,但不能。 代码如下:

using System;
public delegate void click();
class test
{
    public click flare;
    public double length;
    public double Length
    {
        get
        {
            return Length;
        }
        set
        {
            Length = value;
            flare();
        }
    }
}
class glance
{
    public glance(ref test a)
    {
        a.flare = blank;
    }
    public void blank()
    {
        Console.WriteLine("this is blank");
    }
}
class Program
{enter code here
    static void Main(String[] args)
    {
        test know = new test();
        glance x = new glance(ref know);
        know.Length = 10;
    }
}

这与代表无关。您正在长度属性中的setter内部调用setter方法,这会导致异常。请使用为属性创建的支持字段:

public double Length
{
    get
    {
        return length;
    }
    set
    {
        length = value;
        flare();
    }
}