C# 这是正确的类实现和初始化吗?
我发现我的编码实践最近在下滑——并注意到我自己陷入了一些坏习惯——通常是因为我缺乏动力(可能是由于为我设置的任务的空洞性质造成的)——所以为了给自己一点鼓励,我决定写一本非常简单的基础课。这是:C# 这是正确的类实现和初始化吗?,c#,class,refresher,C#,Class,Refresher,我发现我的编码实践最近在下滑——并注意到我自己陷入了一些坏习惯——通常是因为我缺乏动力(可能是由于为我设置的任务的空洞性质造成的)——所以为了给自己一点鼓励,我决定写一本非常简单的基础课。这是: public class Customer { public string CUSTOMERNAME; public List<Site> sites = new List<Site>(); public Customer() {
public class Customer
{
public string CUSTOMERNAME;
public List<Site> sites = new List<Site>();
public Customer()
{
}
public void AddSite(Site location)
{
sites.Add(location);
}
}
public class Site
{
public string SITENAME;
public Address SITEADDRESSDETAILS;
public string SITEPHONENUMBER;
public Site(string sitename, Address siteaddress, string tel)
{
SITENAME = sitename;
SITEADDRESSDETAILS = siteaddress;
SITEPHONENUMBER = tel;
}
}
public class Address
{
public List<string> address = new List<string>();
public Address() {
}
public void AddAddressDetail(string line)
{
address.Add(line);
}
}
公共类客户
{
公共字符串客户名称;
公共列表站点=新列表();
公众客户()
{
}
公共场地(场地位置)
{
地点。添加(位置);
}
}
公共类网站
{
公共字符串SITENAME;
公共广播网站地址详情;
公共字符串SITEPHONENUMBER;
公共站点(字符串站点名称、地址站点地址、字符串电话)
{
SITENAME=SITENAME;
SITEADDRESSDETAILS=站点地址;
SITEPHONENUMBER=tel;
}
}
公共课堂演讲
{
公共列表地址=新列表();
公共广播{
}
public void AddAddressDetail(字符串行)
{
地址。添加(行);
}
}
现在一切似乎都很顺利,但我还是忍不住觉得事情可以做得更好。我已经用以下代码对其进行了测试:
static void Main(string[] args)
{
Customer customer = new Customer();
customer.CUSTOMERNAME = "Max Hammer Ltd";
Address addy = new Address();
addy.AddAddressDetail("1 Edgerail Close");
addy.AddAddressDetail("Greenbushes");
addy.AddAddressDetail("Bluehill");
addy.AddAddressDetail("Surrey");
addy.AddAddressDetail("RH0 6LD");
Site surreyOffice = new Site("Surrey Office", addy, "01737 000000");
addy = new Address();
addy.AddAddressDetail("6 Electric Avenue");
addy.AddAddressDetail("Brixton");
addy.AddAddressDetail("London");
addy.AddAddressDetail("SW4 1BX");
Site brixtonOffice = new Site("Brixton Office", addy, "020 7101 3333");
customer.AddSite(surreyOffice);
customer.AddSite(brixtonOffice);
Console.WriteLine(customer.CUSTOMERNAME);
int numberOfSutes = customer.sites.Count;
for (int i = 0; i < numberOfSutes; i++)
{
Console.WriteLine(customer.sites[i].SITENAME);
foreach (string line in customer.sites[i].SITEADDRESSDETAILS.address)
{
Console.WriteLine(line);
}
Console.WriteLine(customer.sites[i].SITEPHONENUMBER);
}
Console.ReadKey();
}
static void Main(字符串[]args)
{
客户=新客户();
customer.CUSTOMERNAME=“Max Hammer Ltd”;
地址addy=新地址();
addy.AddAddressDetail(“1 Edgerail Close”);
addy.AddAddressDetail(“格林布什”);
addy.AddAddressDetail(“蓝山”);
addy.AddAddressDetail(“萨里”);
addy.AddAddressDetail(“RH0 6LD”);
现场萨里办公室=新现场(“萨里办公室”,地址:01737 000000”);
addy=新地址();
地址详情(“电气大道6号”);
addy.AddAddressDetail(“Brixton”);
addy.AddAddressDetail(“伦敦”);
addy.AddAddressDetail(“SW4 1BX”);
现场brixtonOffice=新现场(“Brixton办公室”,地址:020 7101 3333”);
customer.AddSite(surryoffice);
customer.AddSite(brixtonOffice);
Console.WriteLine(customer.CUSTOMERNAME);
int numberOfSutes=customer.sites.Count;
for(int i=0;i
我对我的Main
类不满意,我也不知道为什么——尽管它满足了我的需求。有什么建议吗?以下是我的看法:
- 使用具有适当大小写的属性
- 为什么要在地址中列出行?![删除]
- 直接访问列表
公共类客户
{
公共字符串名称{get;set;}
公共列表站点{get;set;}
公众客户()
{
站点=新列表();
}
}
公共类网站
{
公共字符串名称{get;set;}
公共字符串地址{get;set;}
公共字符串PhoneNumber{get;set;}
公共站点(字符串站点名称、字符串站点地址、字符串电话)
{
名称=站点名称;
地址=站点地址;
电话号码=电话;
}
}
公共课程
{
静态void Main(字符串[]参数)
{
客户=新客户();
customer.Name=“Max Hammer Ltd”;
string address=string.Join(Environment.NewLine,new[]){“1 Edgerail Close”、“greenbush”、“Bluehill”
","萨里","RH0 6LD",;
现场萨里办公室=新现场(“萨里办公室”,地址,“01737 000000”);
address=string.Join(Environment.NewLine,new[]){“1 Edgerail Close”、“Greenbush”、“Bluehill”
","萨里","RH0 6LD",;
现场brixtonOffice=新现场(“Brixton办公室”,地址,“020 7101 3333”);
customer.Sites.Add(surryoffice);
customer.Sites.Add(brixtonOffice);
Console.WriteLine(客户名称);
foreach(customer.Sites中的站点)
{
Console.WriteLine(站点名称);
控制台写入线(站点地址);
Console.WriteLine(站点.电话号码);
Console.WriteLine();
}
Console.ReadKey();
}
}
首先,我建议不要使用所有大写变量名公共字符串CUSTOMERNAME代码>您应该到此为止。对于初学者,请使用一些常见的编程实践,例如私有字段的小案例。你可以在这里读到关于他们的内容,这应该在@nuke上,这是没有帮助的,没有建设性的。如果您缺乏提供实际可用反馈的动机,StackOverflow可能不适合您。如果地址行中有逗号怎么办?我总是使用列表数据结构来存储列表,而不是来回解析某种定界字符串。谢谢你,艾哈迈德,你的例子向我强调了我让坏习惯产生的确切位置,并让我明白了。再次感谢。
public class Customer
{
public string Name {get; set;}
public List<Site> Sites { get; set; }
public Customer()
{
Sites = new List<Site>();
}
}
public class Site
{
public string Name { get; set; }
public string Address { get; set; }
public string PhoneNumber { get; set; }
public Site(string sitename, string siteaddress, string tel)
{
Name = sitename;
Adress = siteaddress;
PhoneNumber = tel;
}
}
public class Program
{
static void Main(string[] args)
{
Customer customer = new Customer();
customer.Name = "Max Hammer Ltd";
string address = string.Join(Environment.NewLine, new []{"1 Edgerail Close", "Greenbushes", "Bluehill"
, "Surrey", "RH0 6LD"});
Site surreyOffice = new Site("Surrey Office", address, "01737 000000");
address = string.Join(Environment.NewLine, new[]{"1 Edgerail Close", "Greenbushes", "Bluehill"
, "Surrey", "RH0 6LD"});
Site brixtonOffice = new Site("Brixton Office", address, "020 7101 3333");
customer.Sites.Add(surreyOffice);
customer.Sites.Add(brixtonOffice);
Console.WriteLine(customer.Name);
foreach (Site site in customer.Sites)
{
Console.WriteLine(site.Name);
Console.WriteLine(site.Adress);
Console.WriteLine(site.PhoneNumber);
Console.WriteLine();
}
Console.ReadKey();
}
}