我一直在尋找類似的方式使用預處理器創建在C別的像它可能別名(this問題有點類似,無法找到任何有用的有)。代碼片段:創建一個「別名」別的東西
這是問題:我有一個接收陣列的方法,但該陣列的每個位置都有特定的含義,就像他們在那裏有具體名稱不同的參數。我想要做的是使我的代碼更容易通過使用這些特定名稱來讀取(和寫入),但另一方面,我不想創建另一個方法調用(如示例1),也不指定數組定位到新變量(示例2),因爲性能至關重要。
實施例1:
void OriginalMethodSignature(Type[] values)
{
SimplifiedMethod(values[0], values[1], ... values[n]);
}
void SimplifiedMethod(Type specificName1, Type specificName2, ... Type specificNameN)
{
// simple implementation using specific names instead of values[n]
}
實施例2:
void OriginalMethodSignature(Type[] values)
{
Type specificName1 = values[0];
Type specificName2 = values[1];
...
Type specificNameN = values[n];
// simple implementation using specific names instead of values[n]
}
因爲在dellegate使用其時,Type
固定我不能改變方法簽名。
下一個例子是一個好一點,但仍然不是最佳:
void OriginalMethodSignature(Type[] values)
{
// implementation using values[specificName1] ... values [specificNameN]
}
const int specificName1 = 0;
const int specificName2 = 1;
...
const int specificNameN = n-1;
有什麼方法來創建用於此目的的片段?如果是的話,它會是怎樣?
你可以爲每個索引創建一個私有枚舉,然後說'values [(int)MyEnum.FirstValue]'? –
是的,這比沒有更好,我想出了這個,就像我剛剛發佈的編輯。 – HericDenis
不是爲了啓動一個參數,而是'Enums'就像'goto'。適用於非常特定的用例,但通常是代碼異味。 – STW