是否有其他添加Console的方法.在此场景中为WriteLine()



在这段代码中,我希望添加一个控制台。在每个控制台之后写入行()。ReadLine(),但我是如何实现代码的,它给了我一个错误。有没有其他方法可以添加Console。实例中的WriteLine()?

public void CreateAccount()
{
Console.WriteLine("-=-=-=-=-=-=-=-=-=-=-=-=-=-");
Console.WriteLine("Create an Account");
Client createAccount = new Client("Create")
{
NameOfUser = Console.ReadLine(),
SurnameOfUser = Console.ReadLine(),
UserID = Console.ReadLine(),
UserEmail = Console.ReadLine(),
UserHomeAdd = Console.ReadLine(),
UserMobileNumber = int.Parse(Console.ReadLine()),
UsernameField = Console.ReadLine(),
PasswordField = Console.ReadLine(),
CoffePoints = int.Parse(Console.ReadLine())
};

List<Client> accountData = new List<Client>()
{
createAccount
};

您可以创建一个方法来打印一些内容并返回Console。ReadLine(),例如:

private static string ReadLine(string writeMessage, bool parseAsInt = false)
{
Console.WriteLine(writeMessage);
var line = Console.ReadLine();
if (parseAsInt)
{
int parseInt = 0;
int.TryParse(line, out parseInt);
line = parseInt.ToString();
}
return line;
}

然后在创建对象时调用它:

Client createAccount = new Client("Create")
{
NameOfUser = ReadLine("What's your name?"),
SurnameOfUser = ReadLine("Input your surname"),
[...]
CoffePoints = ReadLine("Coffe points?", true)
};

您不能在ReadLine()之间放置WriteLine(),因为您正在初始化新客户端的属性。然而,你可以这样做:

public void CreateAccount()
{
Console.WriteLine("-=-=-=-=-=-=-=-=-=-=-=-=-=-");
Console.WriteLine("Create an Account");
Client createAccount = new Client("Create");
Console.WriteLine("Enter NameOfUser ");
createAccount.NameOfUser = Console.ReadLine();
Console.WriteLine("Enter SurnameOfUser ");
createAccount.SurnameOfUser = Console.ReadLine();
Console.WriteLine("Enter UserID ");
createAccount.UserID = Console.ReadLine();
Console.WriteLine("Enter UserEmail ");
createAccount.UserEmail = Console.ReadLine();
Console.WriteLine("Enter UserHomeAdd ");
createAccount.UserHomeAdd = Console.ReadLine();
Console.WriteLine("Enter UserMobileNumber ");
createAccount.UserMobileNumber = int.Parse(Console.ReadLine());
Console.WriteLine("Enter UsernameField ");
createAccount.UsernameField = Console.ReadLine();
Console.WriteLine("Enter PasswordField ");
createAccount.PasswordField = Console.ReadLine();
Console.WriteLine("Enter CoffePoints ");
createAccount.CoffePoints = int.Parse(Console.ReadLine());

List<Client> accountData = new List<Client>()
{
createAccount
};

当你理解为什么这样做时,我建议你像Isma建议的那样(如果你已经学会了如何制作自己的方法),让你的代码更干净。我写这篇文章是为了帮助你理解为什么你写的不成功。像这样的快捷属性初始化器:

Something s = new Something(){
Property1 = ReadLine(),  //no semicolon here, this is all
Property2 = ReadLine()   //one line of code in a=1,b=2,c=3 pattern
};

不能有多行这样的代码:

Something s = new Something(){
Property1 = WriteLine("Blah"); ReadLine(); //can't put a semicolon here
Property2 = WriteLine("Blah"); ReadLine(); //it HAS to be a comma, because it
Property3 = WriteLine("Blah"); ReadLine(); //HAS to be a single line of code
};

请记住,在C#中定义新代码行的不是返回键,而是分号。这只是一条语言规则,用于设置类似属性的模式是单行,并且只有一条语句可以出现在=的右侧

您必须不使用简写方式(如上所述),或者必须将要使用的所有多行代码放入一个方法中,然后调用该方法(如Isma所建议的)

我还想指出的是,你说过你想"在每次读行后写一条消息"——注意,你的程序会等待用户输入任何内容,然后再打印你的消息。Isma的方法(以及上面的方法)在请求读线之前打印一条消息,因为这通常是你想要做的

如果你真的想在之后,那么把他们移到后面(但我想你真的只能感谢他们的投入,过度感谢的事情很烦人…)所以这样的事情(伊斯玛的方式):

private static string ReadLine(string writeMessage)
{
string s = Console.ReadLine();
Console.WriteLine(writeMessage);
return s;
}

或者我的方式:

public void CreateAccount()
{
Console.WriteLine("-=-=-=-=-=-=-=-=-=-=-=-=-=-");
Console.WriteLine("Create an Account");
Client createAccount = new Client("Create");
createAccount.NameOfUser = Console.ReadLine();
Console.WriteLine("Thanks for entering NameOfUser..");

最新更新