簡體   English   中英

如何從其他類中的函數調用本地方法

[英]How can I call local methods from functions in other classes

我有兩個類,包含形狀函數的“形狀”和“程序”,主要是 class

    public static double TriSides(double b, double h)
    {
        var res = b * h;
        return res;
    }

    public static double Circular(double diameter)
    {
        double SemiCirc(double radius)
        {
            return radius;
        }
        return diameter;
    }
}
class Program
{
    public static void Main(String[] arg)
    {
        Console.WriteLine("A program to generate a shape based on user input");

        Thread.Sleep(500);
        Shapes n = new Shapes();
        Console.Write("Number of sides(1 - 4): ");
        Variables.userInput = Console.ReadLine();
        var input = Variables.userInput;
        if (input == "4")
        {
            Shapes.Quadrilaterals(Variables.inputNum, Variables.inputNum);
        }

        else if (input == "3")
        {
            Shapes.TriSides(Variables.inputNum, Variables.inputNum);
        }

        else if (input == "2")
        {
            //The nested function from the "Circular" function is supposed to be called here
        }

        else if(input == "1")
        {
            Shapes.Circular(Variables.inputNum);
        }
        
    }
}

}

我無法從“形狀”class 中的“圓形”方法訪問本地方法“SemiCirc”

您不能在定義它們的 function 之外調用本地方法!

如果要調用該方法,則不要將其設為本地,將其提升到 class 級別。

您無法訪問該方法,因為它是方法“循環”的私有。

制作半圓公法,提升到class級別。 到目前為止,這是私有的,私有不能在 class 之外訪問。

沒有直接的方法來調用它。 但是,您可以使用反射。

內聯是參考代碼。 通過調試器檢索方法的名稱。

else if (input == "2")
{
    //The nested function from the "Circular" function is supposed to be called here
    Type shapesType = typeof(Shapes);
    MethodInfo semiCircMethodInfo = shapesType.GetMethod(
        "<Circular>g__SemiCirc|1_0", BindingFlags.NonPublic | BindingFlags.Static | BindingFlags.Instance);
    var retValue = semiCircMethodInfo.Invoke(null, new[] { (object)6 });
}

在包含成員中定義的所有局部變量,包括其方法參數,都可以在局部 function 中訪問。 公開

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM