[英]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.