Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/278.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-如何从同一类中的另一个方法调用方法中的变量_C# - Fatal编程技术网

C# C-如何从同一类中的另一个方法调用方法中的变量

C# C-如何从同一类中的另一个方法调用方法中的变量,c#,C#,我想将num1和num2从setproblem方法调用到displayproblem方法。我不知道该怎么做 请帮忙…你不能。方法中声明的变量只能在该方法中使用。为了能够在整个类中使用它们,您必须在类级别声明它们: public class MathProblem { public virtual void setproblem() { Random random = new Random(); int num1 = random.Next(100)

我想将num1和num2从setproblem方法调用到displayproblem方法。我不知道该怎么做


请帮忙…

你不能。方法中声明的变量只能在该方法中使用。为了能够在整个类中使用它们,您必须在类级别声明它们:

public class MathProblem
{
    public virtual void setproblem()
    {
        Random random = new Random();
        int num1 = random.Next(100);
        int num2 = random.Next(100);
        int sum = num1 + num2;
    }

    public virtual void askuserforanswer()
    {
        int answer;

        Console.WriteLine("Enter your answer");
        answer = Convert.ToInt32(Console.ReadLine());
    }

    public virtual void displayproblem()
    {

        Console.WriteLine( num1.ToString() + " + " + num2.ToString() + " = ?");

    }

}
 public class MathProblem
{
 int num1;
 int num2;

public virtual void setproblem()
{
    Random random = new Random();
    num1 = random.Next(100);
    num2 = random.Next(100);
    int sum = num1 + num2;
}

public virtual void askuserforanswer()
{
    int answer;

    Console.WriteLine("Enter your answer");
    answer = Convert.ToInt32(Console.ReadLine());
}

public virtual void displayproblem()
{

    Console.WriteLine( num1.ToString() + " + " + num2.ToString() + " = ?");

}

另外,请注意,我已根据Microsoft的“必须使用字段”将方法名称更改为Pascal大小写

 public class MathProblem
{
    private Random random = new Random();
    private int num1, num2, sum;

    public virtual void SetProblem()
    {
        num1 = random.Next(100);
        num2 = random.Next(100);
        sum = num1 + num2;
    }

    public virtual void AskUserForAnswer()
    {
        int answer;

        Console.WriteLine("Enter your answer");
        answer = Convert.ToInt32(Console.ReadLine());
    }

    public virtual void DisplayProblem()
    {

        Console.WriteLine( num1.ToString() + " + " + num2.ToString() + " = ?");

    }       
}

}

您可以在类级别使用以下字段:

public class MathProblem
{
    public virtual void setproblem()
    {
        Random random = new Random();
        int num1 = random.Next(100);
        int num2 = random.Next(100);
        int sum = num1 + num2;
    }

    public virtual void askuserforanswer()
    {
        int answer;

        Console.WriteLine("Enter your answer");
        answer = Convert.ToInt32(Console.ReadLine());
    }

    public virtual void displayproblem()
    {

        Console.WriteLine( num1.ToString() + " + " + num2.ToString() + " = ?");

    }

}
 public class MathProblem
{
 int num1;
 int num2;

public virtual void setproblem()
{
    Random random = new Random();
    num1 = random.Next(100);
    num2 = random.Next(100);
    int sum = num1 + num2;
}

public virtual void askuserforanswer()
{
    int answer;

    Console.WriteLine("Enter your answer");
    answer = Convert.ToInt32(Console.ReadLine());
}

public virtual void displayproblem()
{

    Console.WriteLine( num1.ToString() + " + " + num2.ToString() + " = ?");

}
如果在类之外需要这些属性,可以使用以下属性:

public class MathProblem
{
    int num1;
    int num2;

    ... rest of code unchanged
}
或者,如果您希望能够从类外设置它们:

public class MathProblem
{
    public int num1 { get; private set;}
    public int num2 { get; private set;}

    ... rest of code unchanged
}
还有一些提示:

如果使用属性,则使用CAMELLOCASE,例如Num1,而不是Num1 还可以在camelcasting中更改方法名称,例如SetProblem、AskUserForAnswer、DisplayProblem。
这些是局部变量,因为它们是在方法中声明的。当方法退出时,它们将被销毁,并且不能在方法之外使用它们。要实现您的功能,您需要在类全局范围内声明它们。最好读一些让你的方法名称更清楚我会把它们改成所谓的camelcasting,例如SetProblem,AskUserForAnswer,DisplayProblem。这次计算机总是给num1 0,num2总是要求0+0你确定你在调用SetProblem方法吗?