字节数组属性C#

字节数组属性C#,c#,properties,.net-core,byte,C#,Properties,.net Core,Byte,我有一个这样的物体: public class CustomObject{ public byte[] FieldA {private get; set;} public IPAddreess FieldB {private get; set;} } public IPAddress GetField(){ if (FieldB != null) return FieldB; FieldB = new IPAddress(FieldA); r

我有一个这样的物体:

public class CustomObject{

    public byte[] FieldA {private get; set;}
    public IPAddreess FieldB {private get; set;}

}
public IPAddress GetField(){
   if (FieldB != null)
       return FieldB;
   FieldB = new IPAddress(FieldA);
   return FieldB;
}
FieldA是FieldB的字节表示形式

我从两个数据源创建这个对象。 一个来自一个二进制文件,我需要快速,然后我宁愿只设置FieldA。另一个是在应用程序中,我仅以“FieldB格式”检索数据

我想要这样一个函数:

public class CustomObject{

    public byte[] FieldA {private get; set;}
    public IPAddreess FieldB {private get; set;}

}
public IPAddress GetField(){
   if (FieldB != null)
       return FieldB;
   FieldB = new IPAddress(FieldA);
   return FieldB;
}
为了简化,我使用了IPAddress转换,但通常我有更复杂的操作要做


这是正确的方法吗?或者有其他方法可以简化这个?我使用的是.NET CORE Thank you Prefore

您可以在
FieldB
的getter中执行此操作,而无需显式编写get方法:

private IPAddreess _fieldB;
public IPAddreess FieldB 
{
    get
    {
        if (_fieldB == null)
        {
            _fieldB = new IPAddress(FieldA);
        }
        return _fieldB;
    }
    set
    {
        _fieldB = value;
    }
}

此代码使用专用支持字段
\u fieldB
存储属性值。检索属性时,它将返回已存储在字段中的值,或者根据
FieldA
的内容分配该值,然后返回该值。

您可以在
FieldB
的getter中执行该操作,而无需显式编写get方法:

private IPAddreess _fieldB;
public IPAddreess FieldB 
{
    get
    {
        if (_fieldB == null)
        {
            _fieldB = new IPAddress(FieldA);
        }
        return _fieldB;
    }
    set
    {
        _fieldB = value;
    }
}

此代码使用专用支持字段
\u fieldB
存储属性值。在检索属性时,它要么返回字段中已经存储的值,要么根据
FieldA
的内容分配它,然后返回它。

在getter/setter方法中使用代码通常是个坏主意。不仅是代码有味道,而且将来你会忘记其中有代码,这会带来麻烦。好的,谢谢你,但是如果我有一个复杂的操作要做,这会使get和set太大太复杂而无法读取吗?@bradbury9那么属性为什么存在呢?您只需使用字段即可。@bradbury9 setter确实存在,以便在其中包含代码。它们不应该有执行昂贵计算(更不用说I/O)的副作用,但这很好。例如,如果您需要在getter/setter中执行复杂的操作,您可能需要重新考虑一下您的设计(可能需要事件和函数),在getter/setter方法中使用代码通常是个坏主意。不仅是代码有味道,而且将来你会忘记其中有代码,这会带来麻烦。好的,谢谢你,但是如果我有一个复杂的操作要做,这会使get和set太大太复杂而无法读取吗?@bradbury9那么属性为什么存在呢?您只需使用字段即可。@bradbury9 setter确实存在,以便在其中包含代码。它们不应该有执行昂贵计算(更不用说I/O)的副作用,但这很好。例如,如果您需要在getter/setter中执行复杂的操作,您可能需要重新考虑一下您的设计(可能需要事件和函数)