问题描述
|
谢谢大家的回答。我遇到的一个问题是,当我在帮助台和IT方法中打印每个变量的值时,它不会打印\“ help \”,\“ hellp123 \”和\“ Welcome Helpdesk!\”。打印\“ admin \”,\“ admin \”和\“ Welcome \”。对于IT方法,情况相同。
public class Login
{
public string[] array = new string[3];
public string UserName;
public string Password;
public string Message;
}
public Login
{
UserName = array[0] = \"admin\";
Password = array[1] = \"admin\";
Message = array[2] = \"Welcome\";
}
public void Helpdesk
{
UserName = \"help\";
Password = \"help123\";
Message = \"Welcome Helpdesk!\";
Console.WriteLine(UserName); //still prints admin
Console.WriteLine(Password); // still prints admin
Console.WriteLine(Message); // still prints Welcome
}
public void IT
{
UserName = \"it\";
Password = \"Pa$$w0rd\";
Message = \"Welcome IT!\";
}
我可以使用相同的变量名:方法的用户名,密码和消息:同一类“登录”的帮助台和IT,如下所示吗?
公共类登录
{
public string [] array = new string [3];
公用字符串UserName;
公共字符串密码;
公共字符串消息;
}
public Login
{
UserName = array[0] = \"admin\";
Password = array[1] = \"admin\";
Message = array[2] = \"Welcome\";
}
public void Helpdesk
{
UserName = \"help\";
Password = \"help123\";
Message = \"Welcome Helpdesk!\";
}
public void IT
{
UserName = \"it\";
Password = \"Pa$$w0rd\";
Message = \"Welcome IT!\";
}
解决方法
您谈论的变量是类中的字段。仅限于该类。如果创建具有相同名称但不在同一类内的新变量(如上述操作),则允许这样做。如果在您的班级内部执行此操作,它将使该字段蒙上阴影,这被认为是不好的做法。
注意:如果仅从类内部分配字段(就像您可能在问题中暗示的那样,但是代码不完整),则只需更改其值即可。
public class Login
{
public string Message;
public string Name;
public void Test()
{
Message = \"Welcome\"; // changes field,same as this.Message = ...
var Name = \"Me\"; // does not change field,hides field Name
}
}
, 您可以,但是必须记住,这些变量在类级别的范围内。当一个方法更改其中任何一个时,其他方法也将使用新值。
, 如果您打算更改类变量的值,那么可以。
, 是的,您绝对可以这样做。变量将在类级别声明的范围内使用,它们可在该类的方法中使用。此外,如果在与类中声明的变量同名的方法中声明变量,则该方法变量将优先于该方法完成。
, Yes
,您可以将变量声明为类成员变量,因此可以在类中的任何方法中进行访问。您甚至可以在类之外访问它,因为它们是public
,但是如果不是public and static
,则需要一个类的实例。
为了回答您编辑过的问题,您提供的代码甚至没有编译,但是假设您要构造一个类
public class Login
{
public string[] array = new string[3];
public string UserName;
public string Password;
public string Message;
public Login()
{
UserName = array[0] = \"admin\";
Password = array[1] = \"admin\";
Message = array[2] = \"Welcome\";
}
public void Helpdesk()
{
UserName = \"help\";
Password = \"help123\";
Message = \"Welcome Helpdesk!\";
Console.WriteLine(UserName); //still prints admin
Console.WriteLine(Password); // still prints admin
Console.WriteLine(Message); // still prints Welcome
}
public void IT()
{
UserName = \"it\";
Password = \"Pa$$w0rd\";
Message = \"Welcome IT!\";
}
}
在主要方法中
Login login = new Login();
login.Helpdesk();
Console.ReadKey();
它将输出
help
help 123
Welcome Helpdisk!
并不是
admin
admin
Welcome