字节数组属性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中执行复杂的操作,您可能需要重新考虑一下您的设计(可能需要事件和函数)