C# 无法访问变量-上下文之外
我整天都在试图通过搜索和阅读来解决这个问题,我知道这一定很简单,但在底部的最后一段代码中,我试图创建打印出输入内容的方法,我不断遇到这个错误 错误CS0103当前上下文中不存在名称“student1”C# 无法访问变量-上下文之外,c#,C#,我整天都在试图通过搜索和阅读来解决这个问题,我知道这一定很简单,但在底部的最后一段代码中,我试图创建打印出输入内容的方法,我不断遇到这个错误 错误CS0103当前上下文中不存在名称“student1” 错误CS0103当前上下文中不存在名称“teacher1” 错误CS0103当前上下文中不存在名称“course1” 如果你能给我指出正确的方向或至少给我一个暗示,我将永远感激你 using System; using System.Collections.Generic; using Syste
错误CS0103当前上下文中不存在名称“teacher1” 错误CS0103当前上下文中不存在名称“course1” 如果你能给我指出正确的方向或至少给我一个暗示,我将永远感激你
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace StudentInformation
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("What would you like to do? Please choose a number: ");
Console.WriteLine("");
Console.WriteLine("1. Enter Student Information");
Console.WriteLine("2. Enter Teacher Information");
Console.WriteLine("3. Enter Class Information");
Console.WriteLine();
int menuOne = Convert.ToInt32(Console.ReadLine());
if (menuOne == 1)
{
GetStudent();
}
else if (menuOne == 2)
{
GetTeacher();
}
else if (menuOne == 3)
{
GetClass();
}
else
{
Console.WriteLine("Incorrect input. Exiting application.");
Console.ReadLine();
}
}
public class Student
{
public string fName { get; set; }
public string lName { get; set; }
public string bDate { get; set; }
}
public class Teacher
{
public string tFName { get; set; }
public string tLName { get; set; }
public string tClass { get; set; }
}
public class Course
{
public string cName { get; set; }
public string cSubject { get; set; }
public string cStart { get; set; }
}
static void GetTeacher()
{
Teacher teacher1 = new Teacher();
Console.WriteLine("Enter teacher's first name: ");
teacher1.tFName = Console.ReadLine();
Console.WriteLine("Enter teacher's last name: ");
teacher1.tLName = Console.ReadLine();
Console.WriteLine("Enter teacher's class name: ");
teacher1.tClass = Console.ReadLine();
}
static void GetStudent()
{
Student student1 = new Student();
Console.WriteLine("Enter student's first name: ");
student1.fName = Console.ReadLine();
Console.WriteLine("Enter student's last name: ");
student1.lName = Console.ReadLine();
Console.WriteLine("Enter student's birthdate: ");
student1.bDate = Console.ReadLine();
PrintStudent();
}
static string GetClass()
{
Course course1 = new Course();
Console.WriteLine("Enter class name: ");
course1.cName = Console.ReadLine();
Console.WriteLine("Enter class subject: ");
course1.cSubject = Console.ReadLine();
Console.WriteLine("Enter class start time: ");
course1.cStart = Console.ReadLine();
return course1.cName;
}
static void PrintStudent()//Going to add PrintTeacher and PrintCourses as well after I figure this out
{
//string student1.fName = GetStudent();
// Console.WriteLine(fName);
Console.WriteLine("{0} and {1} are in {2}", student1.fname, teacher1.tFName, course1.cName);
}
}
}
所有变量
course1
、student1
和teacher1
分别是方法GetClass
、GetStudent
和GetTeacher
的本地变量
如果要这样访问它们,需要将它们设置为类变量。但是,用以下内容替换您的详细说明要简单得多:
Console.WriteLine("{0} and {1} are in {2}", GetStudent(), GetTeacher(), GetClass());
但是,这不起作用,因为“Get”方法需要用户输入。您需要将保存用户输入的变量转换为类变量
您似乎已经创建了返回这些值的方法,但是没有使用它们,但是只有GetClass
方法返回值。GetTeacher
方法从用户处读入值,然后对其不做任何处理
最后从GetStudent
调用您的PrintStudent
方法。如果要使用该结构,则需要将学生姓名传递到方法中:
static void PrintStudent(string studentName)
{
Console.WriteLine(studentName); // Plus formatting
}
然而,如果你想打印出类和教师,你必须从根本上改变你的代码结构,否则你可能会得到无限递归,print方法调用“Get”方法,后者调用print方法
您需要决定代码的结构,然后保持一致。首先用普通语言写出逻辑——这将帮助您确定实际需要的方法和结构。然后,您可以将其转换为伪代码并最终编码。您的所有变量
course1
,student1
和teacher1
分别是方法GetClass
,GetStudent
和GetTeacher
的本地变量
如果要这样访问它们,需要将它们设置为类变量。但是,用以下内容替换您的详细说明要简单得多:
Console.WriteLine("{0} and {1} are in {2}", GetStudent(), GetTeacher(), GetClass());
但是,这不起作用,因为“Get”方法需要用户输入。您需要将保存用户输入的变量转换为类变量
您似乎已经创建了返回这些值的方法,但是没有使用它们,但是只有GetClass
方法返回值。GetTeacher
方法从用户处读入值,然后对其不做任何处理
最后从GetStudent
调用您的PrintStudent
方法。如果要使用该结构,则需要将学生姓名传递到方法中:
static void PrintStudent(string studentName)
{
Console.WriteLine(studentName); // Plus formatting
}
然而,如果你想打印出类和教师,你必须从根本上改变你的代码结构,否则你可能会得到无限递归,print方法调用“Get”方法,后者调用print方法
您需要决定代码的结构,然后保持一致。首先用普通语言写出逻辑——这将帮助您确定实际需要的方法和结构。然后,您可以将其转换为伪代码并最终进行编码。它们是局部变量…此代码需要清除。。到处都是!!您应该避免使用诸如
fName
或cFName
之类的神秘ID。在这两种情况下,一个普通的旧的FirstName
会更好。将参数添加到最后一个函数PrintStudent(Student student1,teacher1,course1)。。到处都是!!您应该避免使用诸如fName
或cFName
之类的神秘ID。在这两种情况下,一个普通的老名字将更好。为最后一个函数PrintStudent(学生1、教师1、课程1)添加参数。你需要调查他是否也必须更改他的getstudent方法,否则你将陷入无休止的循环@乔什·史蒂文斯——没有注意到这一点。还有所有的空格,所以它们不会返回值。这不是一个真正的代码问题,更多的是一个关于变量的概念问题Scope@ChrisF你提供的代码对他的任务没有任何作用?他不想返回整个类,他只想控制台该类的日志属性。。i、 e.name etc+他的方法您的调用do控制台记录在其中,因此他的应用程序现在将与您的修复程序运行不同。他将不得不更改他的getstudent方法,否则您将陷入无休止的循环@乔什·史蒂文斯——没有注意到这一点。还有所有的空格,所以它们不会返回值。这不是一个真正的代码问题,更多的是一个关于变量的概念问题Scope@ChrisF你提供的代码对他的任务没有任何作用?他不想返回整个类,他只想控制台该类的日志属性。。i、 e.name etc+他的方法您的调用do控制台记录在其中,因此他的应用程序将在您的修复程序中运行。