Προς το περιεχόμενο

C# - Συνάρτηση σαν χαρακτηριστικό κλάσης


bnvdarklord

Προτεινόμενες αναρτήσεις

Φτιάχνω μια 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;
	}
	
	
	...
}

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Δεν υπαρχει λογος να φτιαξεις 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.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Αρχειοθετημένο

Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.

  • Δημιουργία νέου...