调用不同类的变量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");
}
}
}
问题是在Area()
方法的范围内定义result1
和result2
。在类级别(public和static)声明它们,它们将是可访问的。
由于方法Area()
是静态的,因此变量也必须是静态的才能从其中访问。不过,您正在从另一个类中以静态的方式访问变量,因此这应该有效。
这是因为result1
和result2
是Area
方法中的局部变量。您必须使它们成为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
时,您可以将方法的结果存储在一个变量中,并在以后访问该数据。