类分解+构造函数

  • 本文关键字:构造函数 分解 c#
  • 更新时间 :
  • 英文 :


你好,我想找一些专家建议如何把我的课分开。请原谅我,这是我学习c#的第五周了,我还很新鲜。我的任务是为一家小说公司创建一个基本的数据库和界面。接口应支持公司成员的基本管理。

唯一的规则是应该有至少2个类。

现在我的问题:-我使用8个成员的类在构造函数头?有没有更好的方法来做到这一点?-社交nb在瑞典是一个日期,我应该创建一个日期类吗?-如果我为每个成员创建一个get和set方法,它将是一个很长的文档,有没有最佳实践?

using System;
class Person
    {
    private string firstname, lastname, socialnb;
    private string email, phone;
    private string streetaddress, postcode, city;
    public Person(string firstname, string lastname, string socialnb, string, email,      string phone, string streetaddress, string postcode, string city)
    {
    this.firstname = firstname;
    this.lastname = lastname;
    this.socialnb = socialnb;
    this.email = email;
    this.phone = phone;
    this.streetaddress = streetaddress;
    this.postcode = postcode;
    this.city = city;
    }
    public String ToString() // Incomplete
    {
    return "nt"; // Will include all fields in the class
    }

}

你不需要创建一个日期类,在c#中已经有了DateTime类:

DateTime Socialnb;

你可以设置你的日期为当前日期:

Socialnb = DateTime.Now;

声明属性时可以使用:

public string firstname {get; set;} //it's like writing getter and setter in C#

用于重写ToString()方法:

public String ToString()
{
return firstname + " " + lastname; //...
}

您应该指定是使用windows窗体还是WPF作为UI。

你应该使用#region…#endregion分割代码,使其更清晰(一个用于属性,一个用于构造函数,一个用于事件…你的选择)

dotnet中的日期类是DateTime

关于成员,如果在类之外需要它们(似乎是这样,因为您的类似乎是一个Model类),则应该创建(auto)Properties。示例:公共类型名称{get;

有两种更好的方法1. 创建两个独立的类(Person和Address),并在Person中保持Address的引用或2. 使用嵌套类(了解更多:http://msdn.microsoft.com/en-us/library/ms173120.aspx)

示例1:

  1. <
  2. 地址/gh>

的人

。firstnameb . lastnamec . socialnbd .电子邮件e .手机

public class Person 
{ 
    // constructor takes only person specific data
    public Person(string firstname, string lastname, string socialnb, 
                  string, email, string phone) 
    {
    }
    // Address Property
    Public Address MyAddress {get; set;}
}

地址

。streetaddressb .邮政编码C. city

public class Address
{
    public Address(string streetaddress, string postcode, string city)
    {
    } 
}

示例2:

public class Person
{
   //keep a reference of Address class
   public Address MyAddress {get; set;}
    public class Address
    {
    }
}

拆分类

你可以用下面的方法划分你的类:

using System;
class Person
    {
    public String FirstName {get; set;}
    public String LastName {get; set;}
    public String SocialNb {get; set;}
    public ContactInfo Contact {get; set;}
    public AddressInfo Address {get; set;}
    public Person(string firstname, string lastname, string socialnb, string, email, string phone, string streetaddress, string postcode, string city)
    {
        Contact = new ContactInfo(email,phone);
        Address = new AddressInfo(streetaddress,postcode,city);
        FirstName = firstname;
        LastName = lastname;
        SocialNb = socialnb;
    }
    public String ToString() // Incomplete
    {
    return "nt"; // Will include all fields in the class
    }
class ContactInfo
{
    public String Email {get; set;}
    public String Phone {get; set;}
    public ContactInfo(String email = "", String phone = "") 
    { 
        Email = email;
        Phone = phone;
    }
}
class AddressInfo
{
    public String Street {get; set;}
    public String Postcode {get; set;}
    public String City {get; set;}
    public AddressInfo(String street = "", String postcode = "", String city = "") 
    { 
        Street = street;
        Postcode = postcode;
        City = city;
    }
}

我在构造函数头部使用8个成员的类-有更好的方法来做到这一点吗?

有几种初始化类成员的方法。你可以使用:

默认参数:

public Person(string firstname="", string lastname="", string socialnb="", string, mail="", string phone="", string streetaddress="", string postcode="", string city=""){}

对象初始化:

Person p = new Person 
{
   FirstName = "John",
   LastName = "Doe",
   Contact = new Contact { Email = "johndoe@dot.com", Phone="123432123"}
   // ... Initialize remaining field...
}

我应该创建一个日期类吗?

正如你所提到的,社交在瑞典是很重要的。如果你想让你的解决方案国际化,String将是最好的选择(因为,基本上,社交始终是数字和/或符号链)

如果我为每个成员创建一个get和set方法它将是一个很长的文档

你不必为每个成员实现getter和setter。使用autoproperties:

public String Street {get; set;}

最新更新