我想在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
}
}
我很困惑;哪一个应该使用,这两种方法有什么区别?哪一个更好,更常用?
答案 0 :(得分:10)
我不会做其中任何一个。您在AddCustomer
类上引入了一个名为customer
的方法。我不希望Customer
知道数据库 - 我希望某种数据访问层或客户存储库能够知道它。
Customer
可能会有一个构建者带名字和家人,或者其他什么,然后你的CustomerRepository
会有Add(Customer)
方法。
以另一种方式来思考:我希望在没有任何知识的情况下使用Customer
类(应该有一个大写C
符合.NET命名约定)是完全合理的。一个数据库,因此 it 可能不应该知道数据库。
不可否认,我自己在自定义XML序列化方面打破了这些自己的规则,允许静态FromXElement
方法和ToXElement
的实例方法......但至少不涉及外部依赖性
答案 1 :(得分:2)
首先,方法1中_name和_family是私有的。没有办法设置它们。您需要将它们定义为公共。
其次,这是一个非常有问题的问题。有时封装成员是有意义的,有时你想在方法调用本身内联它们。没有“更好的方法”。