C# 正确使用对象属性

C# 正确使用对象属性,c#,.net,oop,properties,C#,.net,Oop,Properties,下面是我创建的一个类,用于跟踪我的荣耀数据输入和检索应用程序中的当前人员。一旦他们选择了一个人,它就会调用construtuctor,然后调用数据库来填充其余的信息。此外,在整个计划中,他们将能够改变各个领域 考虑到这一点,我是否正确设置了以下各项?我对属性和使用对象跨多个表单存储数据缺乏经验,如有任何见解,我将不胜感激 谢谢 class CurrentPerson { public string FirstName { get; set; } public string Las

下面是我创建的一个类,用于跟踪我的荣耀数据输入和检索应用程序中的当前人员。一旦他们选择了一个人,它就会调用construtuctor,然后调用数据库来填充其余的信息。此外,在整个计划中,他们将能够改变各个领域

考虑到这一点,我是否正确设置了以下各项?我对属性和使用对象跨多个表单存储数据缺乏经验,如有任何见解,我将不胜感激

谢谢

class CurrentPerson
{
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public string MiddleName { get; set; }
    public string SuffixID { get; set; }
    public string TitleID { get; set; }
    public string SocialSn { get; set; }
    public string BirthDate { get; set; }
    public string Gender { get; set; }
    public string DlNumber { get; set; }
    public string DlStateID { get; set; }
    public string PrimaryRace { get; set; }
    public string SecondaryRace { get; set; }
    public string EmailAddress { get; set; }
    public string MaritalStatus { get; set; }
    public string InsertProgram { get; set; }
    public string InsertUserID { get; set; }
    public string UpdateProgram { get; set; }
    public string UpdateUserID { get; set; }
    public string LockID { get; set; }

    public int PersonID { get; set; }
    public int ClientID { get; set; }
    public int ResidencyCountyID { get; set; }
    public int ResponsibilityCountyID { get; set; }

    public bool HispanicOriginFlag { get; set; }
    public bool CitizenFlag { get; set; }
    public bool VeteranFlag { get; set; }

    public DateTime DeathDate { get; set; }
    public DateTime InsertDateTime { get; set; }
    public DateTime UpdateDateTime { get; set; }

    // Put the default Constructor back in
    public CurrentPerson(){}

    // Custom Constructor that needs the PersonID
    public CurrentPerson(int pID)
    {
        PersonID = pID;

        // Methods to get rest of data here
    }
}
是的,看起来不错。 顺便说一句,您还可以在get/set上设置访问权限,以使其仅公开读/写

public DateTime DeathDate
{
    get;
    private set;
}
是的,看起来不错。 顺便说一句,您还可以在get/set上设置访问权限,以使其仅公开读/写

public DateTime DeathDate
{
    get;
    private set;
}

这在技术上是好的。它们都被宣布为完美无缺


但是,对于DB应用程序,您通常不希望使用自动属性,因为属性设置程序通常是进行验证的好地方,并且可能会将属性/对象标记为“脏”并需要某种形式的保存。

这在技术上是很好的。它们都被宣布为完美无缺



但是,对于DB应用程序,您通常不希望使用自动属性,因为属性设置器通常是进行验证的好地方,并且可能会将属性/对象标记为“脏”并需要某种形式的保存。

自动属性始终是get和set,因此您无法控制属性集(将实例标记为脏的,或其他)。因此,虽然这是一个仅作为数据实体的可接受类,但我通常发现自动属性很少真正适用。

自动属性始终是get和set,因此您无法控制属性集(将实例标记为脏的,或其他)因此,虽然这是一个可接受的仅作为数据实体的类,但我通常发现自动属性很少真正适用。

如果我有私有设置,我仍然可以从我的表单中设置变量吗?您仍然可以在表单上使用变量,您只是不能分配给它--您的代码不会编译。通过构造函数,那么将是唯一的设置它是否为私有的方法是什么?谢谢!同一类的任何成员都可以设置私有属性。外部类和方法不能设置私有属性。如果我设置了私有属性,我仍然可以从我的表单中设置变量吗?您仍然可以在表单上使用该变量,只是不能分配给它--您的代码不会编译。通过构造函数,然后d是设置私有属性的唯一方法吗?谢谢!同一个类的任何成员都可以设置私有属性。外部类和方法不能设置私有属性。你是说我最好使用带有支持字段的标准属性吗?是的,他是这么说的。我的意思是,我很少遇到没有支持字段的情况在setter中有额外的代码,所以我不能使用自动属性。所以是的,在这种情况下,我当然需要一个支持字段。你是说我最好使用一个带有支持字段的标准属性吗?是的,这就是他所说的。我的意思是,我很少有在setter中没有额外代码的情况,所以我不能使用se自动属性。因此,是的,在这些情况下,我当然需要一个支持字段。因此,标准属性设置会更有用吗?可以。这取决于您正在做什么。标准属性为您提供了更多的控制-自动属性只是简化属性实现的一条捷径。如果您想进行任何验证、记录等-sta标准属性提供了直接执行此操作的方法。但是,如果您只想将属性用作字段,则自动属性非常好。此外,正如Chris提到的,您可以使用不同的访问级别来获取/设置标准或自动属性。因此,标准属性设置会更有用吗?可以。这取决于您的操作ng.标准属性为您提供了更多的控件-自动属性只是简化属性实现的捷径。如果您想执行任何验证、日志记录等操作,标准属性提供了直接执行此操作的方法。但是,如果您只想将属性用作字段,则自动属性非常好。此外,正如Chris m如上所述,您可以使用不同的访问级别获取/设置标准或自动属性。