說我有一個結構中聲明如下所示:C#結構/查找表
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加載到內存中一次,然後我只能從我的主項目中引用該內存。然後,我將分配一部分內存,我的代碼將引用它,避免需要創建此查找表的單個實例(從而避免分配內存和存儲新實例所需的時間開銷)。從長遠來看,我節省的時間將是非常有益的,所以我希望我能以某種方式讓這個工作。
我希望這不是太混亂,但讓我知道是否需要澄清。
編輯 這是在一個網站上使用,所以我真的需要一個對象持久存在於所有連接中,並在代碼初次加載時創建一次。同樣的想法,但也許這會使更簡單的解決方案?
看起來你需要一個工廠模式。 – 2011-05-08 00:11:11
@Etienne de Martel您可以創建一個簡單的例子,說明如何從dll的角度和從主項目中工作。沒有真正的幻想。我以前從未使用過工廠模式,而我的有限研究表明它顯示它相當參與。 – JesseBuesking 2011-05-08 00:28:18
一個細微差別:結構是值類型,所以爲了能夠返回null,需要使用特殊的可空結構類型'Nullable'或'Test?'。 –
BoltClock
2011-05-08 00:54:12