bnvdarklord Δημοσ. 27 Απριλίου 2011 Share Δημοσ. 27 Απριλίου 2011 Φτιάχνω μια generic κλάση για Binary Heap, και θέλω να περάσω την συνάρτηση για την σύγκριση δύο αντικειμένων. Αυτο που εχω κάνει και δουλεύει είναι το παρακάτω, αλλα δεν ξέρω αν είναι ο σωστός τρόπος, κυρίως γιατι πρεπει και το delegate και η function να είναι οπωσδήποτε public, πράγμα που μου φαινεται περίεργο. > class BinaryHeapList<T> { public delegate bool CompareFunction(T obj1, T obj2); public CompareFunction GreaterThan; private List<T> L; public BinaryHeapList(CompareFunction gt) { L = new List<T>(); this.GreaterThan = gt; } ... } Συνδέστε για να σχολιάσετε Κοινοποίηση σε άλλες σελίδες άλλες επιλογές
dt008 Δημοσ. 27 Απριλίου 2011 Share Δημοσ. 27 Απριλίου 2011 αν τα κάνεις όλα private δεν νομίζω να έχεις πρόβλημα. Όπως το έχεις τώρα (public η BinaryHeapList) πρέπει να είναι public και ο delegate Συνδέστε για να σχολιάσετε Κοινοποίηση σε άλλες σελίδες άλλες επιλογές
παπι Δημοσ. 27 Απριλίου 2011 Share Δημοσ. 27 Απριλίου 2011 Δεν υπαρχει λογος να φτιαξεις delegete εφοσον υπαρχει (System.Func με αρκετα overload) πχ > class Foo<T> { private Func<T, T, bool> _Expr; public Foo(Func<T, T, bool> expr) { this._Expr = new Func<T, T, bool>(expr); } public void DoSomthing(T t1, T t2) { Console.WriteLine(_Expr(t1,t2)); } } class Program { static bool fee(int a, int { return a<b; } static void Main(string[] args) { Foo<int> f = new Foo<int>((a, => a > ;//lambda Foo<int> f1 = new Foo<int>(fee);// function f.DoSomthing(1,2); f1.DoSomthing(1,2); Console.Read(); } } ΥΓ: Το caps B ειναι bug του forum. Συνδέστε για να σχολιάσετε Κοινοποίηση σε άλλες σελίδες άλλες επιλογές
bnvdarklord Δημοσ. 27 Απριλίου 2011 Μέλος Share Δημοσ. 27 Απριλίου 2011 Χμμ περίπου το ίδιο μου φαίνεται, τι διαφορά εχει; Συνδέστε για να σχολιάσετε Κοινοποίηση σε άλλες σελίδες άλλες επιλογές
Προτεινόμενες αναρτήσεις
Αρχειοθετημένο
Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.