我需要为我的程序存储3个值。 第一个值是一个字节,第二个是另一个字节,最后一个是字符串。 一旦我使用了这些值,我希望能够删除它们。
我应该通过创建一个对象并将这三个值作为参数来存储吗? 或者创建一个三维列表?
答案 0 :(得分:3)
创建一个包含这三个值的类型。
class SomeData
{
private readonly byte _firstByte;
private readonly byte _secondByte;
private readonly string _stringData;
public byte FirstByte { get { return _firstByte; } }
public byte SecondByte { get { return _secondByte; } }
public string StringData { get { return _stringData; } }
public SomeData(byte first, byte second, string data)
{
_firstByte = first;
_secondByte = second;
_stringData = data;
}
}
编写的类是不可变的,但您可以根据需要逐步打开它进行修改。
关于在使用这些值后删除这些值:GC不会自动清除您不再有引用的SomeData
个实例。
答案 1 :(得分:1)
如果它们相关,则将它们放在一个类中,并将值作为字段或属性。
一旦他们的对象不再使用,它将被垃圾收集,因此它将被自动删除。
答案 2 :(得分:1)
一个简单的解决方案可能是使用Tuple
,如果这适合您的需要,例如
var tuple = Tuple.Create(someBytes, moreBytes, myString);
您可以使用tuple.Item1
,tuple.Item2
和tuple.Item3
来访问这些值。
如果您需要,您当然也可以使用多个Tuple
,例如
var list = new List<Tuple<byte, byte, string>> {
tuple,
anotherTuple,
thirdTuple,
etc
};
正如其他人所提到的那样,如果您引用&#34;喜欢&#34;数据,您应该创建一个class
。
答案 3 :(得分:0)
如果您想要Tuple
和class
之间的中间点,请尝试struct
。
struct MyStruct
{
private byte _byte1;
private byte _byte2;
private string _string1;
public byte Byte1 { get { return _byte1; } }
public byte Byte2 { get { return _byte2; } }
public string String1 { get { return _string1; } }
public MyStruct(byte byte1, byte byte2, string string1)
{
_byte1 = byte1;
_byte2 = byte2;
_string1 = string1;
}
}
用法:
MyStruct thisthing = new MyStruct((byte)1, (byte)0, "Howdy!");
Debug.WriteLine(string.Format("{0},{1},{2}", thisthing.Byte1, thisthing.Byte2, thisthing.String1));
输出:
1,0,Howdy!
答案 4 :(得分:0)
这取决于您的商品的相关性。如果它们与同一个父项相关(例如,您正在为Car建模,并且您正在存储TransmissionType,Proce和Make),那么将变量存储在类中是有意义的。
如果它们只是“工作价值”,例如需要计算一些问题,我会将它们存储为三个变量。
我的理由是,在几个月的时间里,一个名称好的变量(可能在一个名字很好的类中)会使它显而易见,而不必搜索代码库以寻找线索。