Скажем, у меня есть структура, объявленная следующим образом:
public struct Test
{
public static int Width = 5;
...
public static int[] Value = new int[1]{ 0 };
}
Теперь я хочу вызвать это из другой структуры, но я должен понять, как это сделать. То, что я пытаюсь сделать, будет (на мой взгляд) выглядеть следующим образом:
public struct AnotherStruct
{
public (type of struct) this[int key]
{
get
{
switch(key)
{
case 1:
return (another struct);
default:
return null;
}
}
}
}
Моя конечная цель заключается в том, что я хочу использовать код, который выглядит следующим образом, без необходимости создавать экземпляр объекта:
structobject s = new AnotherStruct[5];
Таким образом, эта «таблица поиска» будет создана в другом проекте и построена, а затем вызвана как dll из моего основного проекта. Поскольку я создаю dll в другом месте и вызываю ее, я надеюсь, что смогу загрузить dll в память один раз, а затем я могу просто ссылаться на эту память из моего основного проекта. Тогда у меня будет одна выделенная часть памяти, и мой код будет просто ссылаться на нее, избегая необходимости создавать отдельные экземпляры этой таблицы поиска (таким образом, избегая накладных расходов времени, необходимых для выделения памяти и сохранения нового экземпляра). Время, которое я бы сэкономил, было бы чрезвычайно полезным в долгосрочной перспективе, поэтому я надеюсь, что смогу как-то заставить это работать.
Я надеюсь, что это не слишком запутанно, но дайте мне знать, если необходимы какие-либо разъяснения.
Редактировать Это используется на веб-сайте, поэтому мне действительно нужен объект, который сохраняется при всех подключениях и создается один раз при начальной загрузке кода. Та же идея, но, может быть, это упростит решение?
Nullable<Test>
илиTest?
. - person BoltClock   schedule 08.05.2011struct
, чтобы сохраняться между подключениями и создаваться только один раз. Есть ряд более эффективных способов справиться с этим (создать синглтон, кэшированный на уровне приложения, вApplication_Start(..)
вашего global.asax.cs. Использование структур для такого общего назначения может быть опасно - person Bobby D   schedule 08.05.2011