c#中的类定义用不同的方法

时间:2014-02-06 18:42:44

标签: c# class

我想在C#中定义一个类。我找到了这两种方法:

方法1:

public class customer
{
   private string _name ;
   private string _family;

   public string Name
   {
      get { return __name; }
      set { if(value=="")message(" نام کارخانه را وارد کنید ");
          _name= value; }
   }

   public string Family
   {
      get { return _family; }
      set { if(value=="")message(" نام کارخانه را وارد کنید ");
          _family= value; }
   }

   public void AddCustomer() 
   {
      add _name and _family to database
   }
}

方法2:

public class customer
{
   public void AddCustomer(string name ,string family) 
   {
      //code to add a customer
   }
}

我很困惑;哪一个应该使用,这两种方法有什么区别?哪一个更好,更常用?

2 个答案:

答案 0 :(得分:10)

我不会做其中任何一个。您在AddCustomer类上引入了一个名为customer 的方法。我不希望Customer知道数据库 - 我希望某种数据访问层或客户存储库能够知道它。

Customer可能会有一个构建者带名字和家人,或者其他什么,然后你的CustomerRepository会有Add(Customer)方法。

以另一种方式来思考:我希望在没有任何知识的情况下使用Customer类(应该有一个大写C符合.NET命名约定)是完全合理的。一个数据库,因此 it 可能不应该知道数据库。

不可否认,我自己在自定义XML序列化方面打破了这些自己的规则,允许静态FromXElement方法和ToXElement的实例方法......但至少不涉及外部依赖性

答案 1 :(得分:2)

首先,方法1中_name和_family是私有的。没有办法设置它们。您需要将它们定义为公共。

其次,这是一个非常有问题的问题。有时封装成员是有意义的,有时你想在方法调用本身内联它们。没有“更好的方法”。