可以';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.的巴赫,所以请原谅我,因为这是一个新手问题。

可以';t从C#中的方法中检索信息

不返回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函数。由于变量SchoolNameEnrollmentStatusColorOneColorTwo是局部变量,不会返回,因此无法在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();
    }