これは、値による構造の受け渡しの制限を回避する簡単な方法であると考えていました (実際には、構造にはもっと多くのメンバーがあります)。デリゲート配列の唯一の目的です。
このデリゲートと構造が与えられた場合:
public delegate void ChangeValues();
structure Effects
{
int val1,val2,val3;
void SetValues(int index)
{
ChangeValues[] delegateArray = new ChangeValues(){this.SetValSet1,this.setValSet2,this.SetValSet3};
delegateArray[index](); //now set the values as necessary
}
void setValSet1()
{
val1=0;val2=1;val3=2;
}
void setValSet2()
{
val1=1;val2=2;val3=3;
}
void setValSet3()
{
val1=2;val2=3;val3=4;
}
}
Effects effects = new Effects();
effects.SetValues(1); //when stepping through code one sees the values change inside eh setValues functions, but the modified values are gone after leaving this function
デリゲートを使用すると、構造体の別のインスタンスが作成されてから失われますか?