存储3个值的最佳方法是什么?

时间:2015-05-02 23:26:59

标签: c#

我需要为我的程序存储3个值。 第一个值是一个字节,第二个是另一个字节,最后一个是字符串。 一旦我使用了这些值,我希望能够删除它们。

我应该通过创建一个对象并将这三个值作为参数来存储吗? 或者创建一个三维列表?

5 个答案:

答案 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.Item1tuple.Item2tuple.Item3来访问这些值。

如果您需要,您当然也可以使用多个Tuple,例如

var list = new List<Tuple<byte, byte, string>> {
    tuple,
    anotherTuple,
    thirdTuple,
    etc
};

正如其他人所提到的那样,如果您引用&#34;喜欢&#34;数据,您应该创建一个class

答案 3 :(得分:0)

如果您想要Tupleclass之间的中间点,请尝试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),那么将变量存储在类中是有意义的。

如果它们只是“工作价值”,例如需要计算一些问题,我会将它们存储为三个变量。

我的理由是,在几个月的时间里,一个名称好的变量(可能在一个名字很好的类中)会使它显而易见,而不必搜索代码库以寻找线索。