C# でのデリゲートの使用を考慮して、パフォーマンス上の利点があるかどうか、またはプログラマにとって便利かどうかを知っている人はいますか? メソッドを保持するオブジェクトを作成している場合、呼び出されるたびにメソッドをロードするのではなく、そのオブジェクトが呼び出されるメモリ内の定数であるかのように聞こえます。たとえば、次の Unity3D ベースのコードを見ると:
public delegate H MixedTypeDelegate<G, H>(G g)
public class MainParent : MonoBehaviour // Most Unity classes inherit from M.B.
{
public static Vector3 getPosition(GameObject g)
{
/* GameObject is a Unity class, and Vector3 is a struct from M.B.
The "position" component of a GameObject is a Vector3. This method
takes the GameObject I pass to it & returns its position. */
return g.transform.position;
}
public static MixedTypeDelegate<GameObject, Vector3> PositionOf;
void Awake( ) // Awake is the first method called in Unity, always.
{
PositionOf = MixedTypeDelegate<GameObject, Vector3>(getPosition);
}
}
public class GameScript : MainParent
{
GameObject g = new GameObject( );
Vector3 whereAmI;
void Update( )
{
// Now I can say:
whereAmI = PositionOf(g);
// Instead of:
whereAmI = getPosition(g);
}
}
. . . しかし、それは余分なステップのように思えます-それが役立つ特別な小さなことがない限り.
2 番目の質問をする最も簡潔な方法は、次のように言うことだと思います: デリゲートを理解するのに「あはは」の瞬間があったとき、コンテキスト/シナリオ/ソースは何でしたか?