寻求帮助尝试打印 class 属性以从两个不同的 classes 进行控制台,但保持它们在输入时配对
Looking for help trying to print class properties to console from two different classes but keeping them paired as when they were entered
我正在为我在实例化 classes 上做的教程做“家庭作业”。我想弄清楚如何在用户的名字和姓氏以及他们输入的地址的末尾打印到控制台。我有一个 public class 具有名字和姓氏的属性,另一个 public class 具有街道地址、城市、州、邮政编码的属性,然后是第三个 class 来“处理”数据到控制台的输出。我想要完成的是输入用户数据,完成后将其打印到控制台,如下所示:
姓名:弗雷德·德斯特
地址:1234 Fake Street N. Fake City, FS 69696
姓名:比尔·穆里
地址:4321 Fake Street S. Fake City, FS 69696
我只知道如何让它打印所有的名字,然后是所有的地址。我在这里进行了一些搜索,但我的知识还不足以真正理解我正在阅读的答案以及它们是否适用于我的场景。
主程序:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleUI
{
class Program
{
static void Main(string[] args)
{
string firstName = "";
List<PersonModel> people = new List<PersonModel>();
List<AddressModel> address = new List<AddressModel>();
do
{
Console.Write("What is your first name? (type exit to stop): ");
firstName = Console.ReadLine();
if (firstName.ToLower() != "exit")
{
Console.Write("What is your last name?: ");
string lastName = Console.ReadLine();
Console.Write("What is your Street Address?: ");
string streetAddress = Console.ReadLine();
Console.Write("What is the city you live in?: ");
string city = Console.ReadLine();
Console.Write("What is the state you live in?: ");
string state = Console.ReadLine();
Console.Write("What is your zip code?: ");
string zipCode = Console.ReadLine();
bool isValid = int.TryParse(zipCode, out int outputZipCode);
PersonModel person = new PersonModel();
person.UserFirstName = firstName;
person.UserLastName = lastName;
people.Add(person);
AddressModel userAddress = new AddressModel();
userAddress.UserStreetAddress = streetAddress;
userAddress.UserCity = city;
userAddress.UserState = state;
userAddress.UserZipCode = outputZipCode;
address.Add(userAddress);
}
} while (firstName.ToLower() != "exit");
foreach (PersonModel p in people)
{
ProcessPerson.GreetPerson(p);
}
foreach (AddressModel a in address)
{
ProcessPerson.SayUserAddress(a);
}
Console.ReadLine();
}
}
}
地址模型Class:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleUI
{
public class AddressModel
{
public string UserStreetAddress { get; set; }
public string UserCity { get; set; }
public string UserState { get; set; }
public int UserZipCode { get; set; }
public bool HasBeenGreeted { get; set; }
}
}
人物模型Class:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleUI
{
public class PersonModel
{
public string UserFirstName { get; set; }
public string UserLastName { get; set; }
public bool HasBeenGreeted { get; set; }
}
}
ProcessPerson Class:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleUI
{
public static class ProcessPerson
{
public static void GreetPerson(PersonModel person)
{
Console.WriteLine($"Hello { person.UserFirstName } { person.UserLastName }");
//Console.WriteLine($"Your Address is: { userAddress.UserStreetAddress } { userAddress.UserCity } { userAddress.UserState } { userAddress.UserZipCode }");
person.HasBeenGreeted = true;
}
public static void SayUserAddress(AddressModel userAddress)
{
Console.WriteLine($"Your Address is: { userAddress.UserStreetAddress } { userAddress.UserCity } { userAddress.UserState } { userAddress.UserZipCode }");
userAddress.HasBeenGreeted = true;
}
}
}
您需要一种将地址与人相关联的方法。现在你无法在每次循环迭代结束后知道一个人的地址。
如果每个人只有一个地址,则将 属性 添加到 PersonModel
类型 AddressModel
。
public class PersonModel
{
public string UserFirstName { get; set; }
public string UserLastName { get; set; }
public bool HasBeenGreeted { get; set; }
public AddressModel Address {get; set;}
}
然后在您的代码中,设置 属性 而不是将地址添加到列表中:
AddressModel userAddress = new AddressModel();
userAddress.UserStreetAddress = streetAddress;
userAddress.UserCity = city;
userAddress.UserState = state;
userAddress.UserZipCode = outputZipCode;
//instead of this:
//address.Add(userAddress);
// do this:
person.Address = userAddress;
然后你可以在控制台输出中使用person.Address.<any property>
。
我正在为我在实例化 classes 上做的教程做“家庭作业”。我想弄清楚如何在用户的名字和姓氏以及他们输入的地址的末尾打印到控制台。我有一个 public class 具有名字和姓氏的属性,另一个 public class 具有街道地址、城市、州、邮政编码的属性,然后是第三个 class 来“处理”数据到控制台的输出。我想要完成的是输入用户数据,完成后将其打印到控制台,如下所示:
姓名:弗雷德·德斯特 地址:1234 Fake Street N. Fake City, FS 69696
姓名:比尔·穆里 地址:4321 Fake Street S. Fake City, FS 69696
我只知道如何让它打印所有的名字,然后是所有的地址。我在这里进行了一些搜索,但我的知识还不足以真正理解我正在阅读的答案以及它们是否适用于我的场景。
主程序:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleUI
{
class Program
{
static void Main(string[] args)
{
string firstName = "";
List<PersonModel> people = new List<PersonModel>();
List<AddressModel> address = new List<AddressModel>();
do
{
Console.Write("What is your first name? (type exit to stop): ");
firstName = Console.ReadLine();
if (firstName.ToLower() != "exit")
{
Console.Write("What is your last name?: ");
string lastName = Console.ReadLine();
Console.Write("What is your Street Address?: ");
string streetAddress = Console.ReadLine();
Console.Write("What is the city you live in?: ");
string city = Console.ReadLine();
Console.Write("What is the state you live in?: ");
string state = Console.ReadLine();
Console.Write("What is your zip code?: ");
string zipCode = Console.ReadLine();
bool isValid = int.TryParse(zipCode, out int outputZipCode);
PersonModel person = new PersonModel();
person.UserFirstName = firstName;
person.UserLastName = lastName;
people.Add(person);
AddressModel userAddress = new AddressModel();
userAddress.UserStreetAddress = streetAddress;
userAddress.UserCity = city;
userAddress.UserState = state;
userAddress.UserZipCode = outputZipCode;
address.Add(userAddress);
}
} while (firstName.ToLower() != "exit");
foreach (PersonModel p in people)
{
ProcessPerson.GreetPerson(p);
}
foreach (AddressModel a in address)
{
ProcessPerson.SayUserAddress(a);
}
Console.ReadLine();
}
}
}
地址模型Class:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleUI
{
public class AddressModel
{
public string UserStreetAddress { get; set; }
public string UserCity { get; set; }
public string UserState { get; set; }
public int UserZipCode { get; set; }
public bool HasBeenGreeted { get; set; }
}
}
人物模型Class:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleUI
{
public class PersonModel
{
public string UserFirstName { get; set; }
public string UserLastName { get; set; }
public bool HasBeenGreeted { get; set; }
}
}
ProcessPerson Class:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleUI
{
public static class ProcessPerson
{
public static void GreetPerson(PersonModel person)
{
Console.WriteLine($"Hello { person.UserFirstName } { person.UserLastName }");
//Console.WriteLine($"Your Address is: { userAddress.UserStreetAddress } { userAddress.UserCity } { userAddress.UserState } { userAddress.UserZipCode }");
person.HasBeenGreeted = true;
}
public static void SayUserAddress(AddressModel userAddress)
{
Console.WriteLine($"Your Address is: { userAddress.UserStreetAddress } { userAddress.UserCity } { userAddress.UserState } { userAddress.UserZipCode }");
userAddress.HasBeenGreeted = true;
}
}
}
您需要一种将地址与人相关联的方法。现在你无法在每次循环迭代结束后知道一个人的地址。
如果每个人只有一个地址,则将 属性 添加到 PersonModel
类型 AddressModel
。
public class PersonModel
{
public string UserFirstName { get; set; }
public string UserLastName { get; set; }
public bool HasBeenGreeted { get; set; }
public AddressModel Address {get; set;}
}
然后在您的代码中,设置 属性 而不是将地址添加到列表中:
AddressModel userAddress = new AddressModel();
userAddress.UserStreetAddress = streetAddress;
userAddress.UserCity = city;
userAddress.UserState = state;
userAddress.UserZipCode = outputZipCode;
//instead of this:
//address.Add(userAddress);
// do this:
person.Address = userAddress;
然后你可以在控制台输出中使用person.Address.<any property>
。