调用不同类的变量c#

本文关键字:变量 同类 调用 | 更新日期: 2023-09-27 18:28:31

我正试图编写一个有两个类的程序,并从一个类到另一个类调用两个变量,但我遇到了两个错误,即"Area.Circle"不包含"result1"的定义和"Area.Circle'不包含"result2'"的定义。我该如何解决这个问题?

using System;
namespace Area
{
    class Circle
    {
        public static void Area()
        {
            Console.WriteLine("Enter the radius of the first circle:   ");
            int r1 = Convert.ToInt32(Console.ReadLine());
            Console.WriteLine("Enter the radius of the second circle:   ");
            int r2 = Convert.ToInt32(Console.ReadLine());
            double pi = Math.PI;
            double result1 = pi * r1 * r1;
            double result2 = pi * r2 * r2;
            Console.WriteLine("The area of the first circle is {0}'nThe area of the second circle is {1}'n", result1, result2);
        }
    }
    class Minimum
    {
        static void Main(string[] args)
        {
            Circle.Area();
            Circle one = new Circle();
            double min = Math.Min(Circle.result1, Circle.result2);
            Console.WriteLine("min");
        }
    }
}

调用不同类的变量c#

问题是在Area()方法的范围内定义result1result2。在类级别(public和static)声明它们,它们将是可访问的。

由于方法Area()是静态的,因此变量也必须是静态的才能从其中访问。不过,您正在从另一个类中以静态的方式访问变量,因此这应该有效。

这是因为result1result2Area方法中的局部变量。您必须使它们成为public,并且在类级别(也许可以考虑将它们变成Properties):

class Circle
{
    public double Result1 { get; set; }
    public double Result2 { get; set; }
}

需要注意的一点是,如果将Area声明为static方法,则无法在调用函数中使用实例成员

当您有一个计算值的方法时,它需要将计算的值返回给调用者。将它们存储在本地变量中不会将它们暴露给方法的调用方。在这种情况下,由于要返回两个值,因此需要将这两个值封装在另一个可以返回的类中。您可以创建一个自定义类,或者简单地使用一个通用类,如Tuple

public static Tuple<double, double> Area()
{
    Console.WriteLine("Enter the radius of the first circle:   ");
    int r1 = Convert.ToInt32(Console.ReadLine());
    Console.WriteLine("Enter the radius of the second circle:   ");
    int r2 = Convert.ToInt32(Console.ReadLine());
    double pi = Math.PI;
    double result1 = pi * r1 * r1;
    double result2 = pi * r2 * r2;
    Console.WriteLine("The area of the first circle is {0}'nThe area of the second circle is {1}'n", result1, result2);
    return Tuple.Create(result1, result2);
}

当您调用Area时,您可以将方法的结果存储在一个变量中,并在以后访问该数据。