可以';t从C#中的方法中检索信息
本文关键字:方法 检索 信息 可以 | 更新日期: 2023-09-27 17:57:43
class Program
{
public static void GetSchoolInfo()
{
string SchoolName,
EnrollmentStatus,
ColorOne,
ColorTwo;
Console.WriteLine("Please enter your school name: ");
SchoolName = Console.ReadLine();
Console.WriteLine("Please enter your Enrollment Status: ");
EnrollmentStatus = Console.ReadLine();
Console.WriteLine("Pleas enter one of your school's colors: ");
ColorOne = Console.ReadLine();
Console.WriteLine("Please enter the other school color: ");
ColorTwo = Console.ReadLine();
}
static void Main(string[] args)
{
GetSchoolInfo();
Console.ReadLine();
}
etc
我的目的是创建一个方法来获取这些字符串,然后很好地输出它们。在方法之外,我似乎无法调用SchoolName字符串或任何其他字符串。我目前正在学校学习C.S.的巴赫,所以请原谅我,因为这是一个新手问题。
不返回void,而是返回一个可以在main中使用的类的新实例:
public class SchoolInfo
{
public string SchoolName { get; set; }
public string EnrollmentStatus { get; set; }
public string ColorOne { get; set; }
public string ColorTwo { get; set; }
}
public static SchoolInfo GetSchoolInfo()
{
string SchoolName,
EnrollmentStatus,
ColorOne,
ColorTwo;
Console.WriteLine("Please enter your school name: ");
SchoolName = Console.ReadLine();
Console.WriteLine("Please enter your Enrollment Status: ");
EnrollmentStatus = Console.ReadLine();
Console.WriteLine("Pleas enter one of your school's colors: ");
ColorOne = Console.ReadLine();
Console.WriteLine("Please enter the other school color: ");
ColorTwo = Console.ReadLine();
return new SchoolInfo()
{
SchoolName = SchoolName,
EnrollmentStatus = EnrollmentStatus,
ColorOne = ColorOne,
ColorTwo = ColorTwo
};
}
private static void Main(string[] args)
{
SchoolInfo info = GetSchoolInfo();
Console.WriteLine("You Entered School Name: "+info.SchoolName);
Console.ReadLine();
}
这是因为它们的作用域。范围是由变量的定义位置决定的,它们是在方法内部的示例中定义的。因此,这就是他们的范围所在。方法很快就会超出范围,因此,它们的局部变量也会超出范围。如果你想在类外访问这些变量,你应该将它们定义为类变量,如下所示:
class Program
{
string SchoolName,
EnrollmentStatus,
ColorOne,
ColorTwo;
public static void GetSchoolInfo()
{
Console.WriteLine("Please enter your school name: ");
SchoolName = Console.ReadLine();
Console.WriteLine("Please enter your Enrollment Status: ");
EnrollmentStatus = Console.ReadLine();
Console.WriteLine("Pleas enter one of your school's colors: ");
ColorOne = Console.ReadLine();
Console.WriteLine("Please enter the other school color: ");
ColorTwo = Console.ReadLine();
}
static void Main(string[] args)
{
GetSchoolInfo();
Console.ReadLine();
}
正如@Adam Maras所提到的,您正试图访问一个不再在您范围内的变量。当您在函数中声明一个变量时,它在该函数中生存和消亡。这意味着您将无法再从函数外部访问它。
现在是解决方案;创建一个类来保存变量,并在主应用程序中使用。
下面是一个演示。
这些都是编程的基础,了解这些基础会让你走很长的路。。祝好运
public class SchoolInfo
{
/* two properties are defined as public to carry the data */
public string NameOfTheSchool { get; set; }
public string AddressOfTheAchool { get; set; }
}
class Program
{
public static void GetSchoolInfo(SchoolInfo info)
{
info.NameOfTheSchool = "AA";
info.AddressOfTheAchool = "BB";
}
static void Main()
{
// create the instance of the class
SchoolInfo mySchoolInfo = new SchoolInfo();
// pass it into GetSchoolInfo to collect the data
GetSchoolInfo(mySchoolInfo);
// print the value of the name of the school
Console.WriteLine(mySchoolInfo.NameOfTheSchool);
Console.ReadKey();
}
}
不能在GetSchoolInfo
方法之外访问这些变量的原因是它们是局部变量,因此不在该方法之外的任何地方。我读过这个话题。
该方法被声明为void
函数。由于变量SchoolName
、EnrollmentStatus
、ColorOne
和ColorTwo
是局部变量,不会返回,因此无法在GetSchoolInfo()
函数之外访问它们。您可以将它们声明为全局变量,也可以创建Collection
并从函数中返回它们。我更喜欢第二种选择,但那取决于你。
GetSchoolnfo((方法中定义的变量是该方法的本地变量,这意味着它们只能在该方法中访问。您可以将它们定义为类级变量,而不是方法,以便其他方法也可以访问它们。
class Program
{
private String SchoolName;
private String EnrollmentStatus;
private String ColorOne;
private String ColorTwo;
public static void GetSchoolInfo()
{
Console.WriteLine("Please enter your school name: ");
SchoolName = Console.ReadLine();
Console.WriteLine("Please enter your Enrollment Status: ");
EnrollmentStatus = Console.ReadLine();
Console.WriteLine("Pleas enter one of your school's colors: ");
ColorOne = Console.ReadLine();
Console.WriteLine("Please enter the other school color: ");
ColorTwo = Console.ReadLine();
}
static void Main(string[] args)
{
GetSchoolInfo();
Console.ReadLine();
}