В C # стоит ли хранить целые числа (или любые типы значений) в виде объектов и приводить их обратно к типу int (или типу значений)?
В основном мне нужно создать таблицу в памяти.Я могу создать «столбцы», специфичные для каждого возможного типа (так что любой тип примитивного значения, такой как int, double, string и т. Д., А также определяемые пользователем ссылочные типы, которые я хочу сохранить в таблице, такие как Order), или я могу просто хранить ВСЕ как объекти приведите их обратно к правильному типу при доступе к таблице.
Так что мой вопрос в том, какой подход будет работать лучше или оба будут одинаковыми?
Или я должен придерживаться определенных «столбцов»для всех типов значений и сохранить все пользовательские ссылочные типы как объект?
Спасибо - Пример кода ниже - Метод статического теста показывает использование.
public sealed class Columns
{
public static void Test()
{
Columns cols = new Columns(100);
cols.SetInt(0,Int_Column,12345);
int value = cols.GetInt(0,Int_Column);
cols.SetObject(1,Object_Column,12345);
int value2 = (int)cols.GetObject(1,Object_Column);
}
private const int Int_Column = 0;
private const int String_Column = 1;
private const int Object_Column = 2;
private int[] _intCol;
private string[] _stringCol;
private object[] _objCol;
public Columns(int rowCount)
{
_intCol = new int[rowCount];
_stringCol = new string[rowCount];
_objCol = new object[rowCount];
}
public void SetInt(int rowIndex, int colIndex, int value)
{
switch(colIndex)
{
case Int_Column:
_intCol[rowIndex] = value;
break;
default:
throw new Exception("Incorrect column index specified.");
}
}
public int GetInt(int rowIndex, int colIndex)
{
switch(colIndex)
{
case Int_Column:
return _intCol[rowIndex];
default:
throw new Exception("Incorrect column index specified.");
}
}
public void SetString(int rowIndex, int colIndex, string value)
{
switch(colIndex)
{
case String_Column:
_stringCol[rowIndex] = value;
break;
default:
throw new Exception("Incorrect column index specified.");
}
}
public string GetString(int rowIndex, int colIndex)
{
switch(colIndex)
{
case String_Column:
return _stringCol[rowIndex];
default:
throw new Exception("Incorrect column index specified.");
}
}
public void SetObject(int rowIndex, int colIndex, object value)
{
switch(colIndex)
{
case Object_Column:
_objCol[rowIndex] = value;
break;
default:
throw new Exception("Incorrect column index specified.");
}
}
public object GetObject(int rowIndex, int colIndex)
{
switch(colIndex)
{
case Object_Column:
return _objCol[rowIndex];
default:
throw new Exception("Incorrect column index specified.");
}
}
}