Ce l'Abbiamo fatta!
Ho scritto la classe Face in questo modo:
codice:public class Face { public int[] nodes; public Face() { nodes = new int[4]; nodes[0] = 0; nodes[1] = 1; nodes[2] = 2; nodes[3] = 3; } }
quindi scrivo le due classìi FaceT e FaceH con i loro costruttori ma SENZA campi: questi li faccio ereditare da Face
infine il metodo genericocodice:public class FaceT : Face { public FaceT() { nodes = new int[4]; nodes[0] = 0; nodes[1] = 2; nodes[2] = 4; nodes[3] = 6; } } public class FaceH : Face { public FaceH() { nodes = new int[4]; nodes[0] = 1; nodes[1] = 3; nodes[2] = 5; nodes[3] = 7; } }
ed ottengo (giustamente)codice:public static int Sum<T>(T face) where T : Face { int sum = 0; for (int i = 0; i < 4; i++) sum += face.nodes[i]; return sum; }
int Sum<FaceT>(FaceT face) = 12
int Sum<FaceH>(FaceH face) = 16
Grazie a tutti.![]()




Rispondi quotando