【发布时间】:2019-10-12 17:13:54
【问题描述】:
我试图在Main 之外的方法中调用在Main 中创建的类对象,但它不起作用。我是 C# 新手,所以我习惯了 python 的 Def 及其不同的方式。
public class User
{
public string name;
public string password;
public string notepad;
}
static void Main(string[] args)
{
Console.Clear();
Console.WriteLine("\n--------------------------\n"+"Please create a new user."+"\n--------------------------");
Console.WriteLine("\nUsername: ");
string x = Console.ReadLine();
Console.WriteLine("\nPassword: ");
string y = Console.ReadLine();
**User xe = new User();
xe.name = x;**
----removed cuz has nothing to do with the code----
Console.WriteLine("Dashboard");
Console.WriteLine("\nPlease choose a function by inputting the number before the name.\n1 - Notepad\n2 - Calculator");
while(login) {
try{
int letter = Convert.ToInt32(Console.ReadLine());
login = false;
if(letter == 1) {
Console.WriteLine("Notepad");
}
else if(letter == 2) {
Console.WriteLine("Calculator");
}
}
catch{
Console.WriteLine("Please input a number.");
}
}
}
**public static string notepad(string np){
np = Console.ReadLine();
xe.notepad = np;**
}
我在出错的部分加上**。
【问题讨论】:
-
您的
notepad方法不返回任何值,但其签名表明它应该返回string。在其中添加return语句。 -
“我把 ** 放在给出错误的部分。” - 你已经指出了代码的多个部分。你问的是哪一个?确切的错误是什么?错误指的是哪一行?请将代码格式化为完整且可编译的代码(当然除了有问题的编译错误),您可以在目标行上使用注释来指示它是哪一个。
-
如果我要猜测你所指的错误......你试图在你的
notepad方法中引用一个名为xe的变量,但是该方法没有这样的变量。 -
是的,这有点令人困惑,我试图让 xe 进入记事本方法,基本上是试图将一个类调用到另一个方法中?不知道你是不是这么说的。
-
您的记事本方法正在尝试使用超出范围的对象 (xe)。您必须将 xe 传递给记事本方法,以便它可以对其进行操作。很好奇,如果你只是在方法中向用户询问它(np),为什么你会有一个用于记事本方法的参数(字符串 np)?