+ Rispondi al Thread
Visualizzazione dei risultati da 1 a 4 su 4

Discussione: Overload non riuscito

  1. #1
    Chico non è in linea Scolaretto
    Luogo
    Padova
    Post
    104

    Overload non riuscito

    Ciao a tutti
    Sto tentando di definire due metodi ToPointF() che differiscono tra loro per il tipo restituito.
    Il secondo mi ritorna errore in quanto il metodo ha gli "stessi tipi di parametro".
    codice:
        public struct Polyline
        {
            private List<Point2D> vertex;
     ...
    
    		public List<PointF> ToPointF()
    		{
     			List<PointF> ps = new List<PointF>();
    			foreach (Point2D p in vertex)
    			{
    				ps.Add (p.ToPointF());
    			}
    			return ps;
    		}
    
    		public PointF[] ToPointF()
    		{
    			int n = vertex.Count-1;
    			PointF[] ps = new PointF [n];
    			int i = -1;
    			foreach (Point2D p in vertex)
    			{
    				i++;
    				ps[i] = p.ToPointF();
    			}
    			return ps;
    		}
    	}
    Di solito programmo in VB e se il tipo restituito è diverso, anche la firma è diversa, e i 2 metodi vengono accettati entrambi. In C# non è così? Come posso risolvere ?

  2. #2
    L'avatar di AntonioG
    AntonioG non è in linea Moderatore Globale Ultimo blog: Commodore 64 e Codemotion
    Luogo
    Roma
    Post
    16,385
    Blogs
    5
    No, questo non è possibile, né in C# né in VB.NET.

    Le firme non possono differire solo per il tipo di dato restituito.

    A parte il fatto che non è una "buona pratica", l'unico modo è usare nomi diversi "parlanti", ad esempio

    ListToPointF

    PointFToPointF
    Avvisi generali e importanti, a pena CHIUSURA thread e/o BAN
    Il crossposting è vietato.
    Le richieste di "pappa pronta" sono vietate.
    Utilizzate i tag CODE per il codice.
    Leggere il Regolamento per chiarimenti PRIMA di creare nuovi thread.
    Utilizzare sempre i PM per comunicare con i moderatori.
    Non mi contattate in PM per problemi di software, usate il forum

  3. #3
    Chico non è in linea Scolaretto
    Luogo
    Padova
    Post
    104
    OK. Allora non mi resta che rinominare i due metodi.
    ToPointFList
    ToPointFArray

    bye

  4. #4
    L'avatar di _alka_
    _alka_ non è in linea Very Important Person
    Luogo
    Reggio Emilia
    Post
    1,157
    Quote Originariamente inviato da Chico Visualizza il messaggio
    Di solito programmo in VB e se il tipo restituito è diverso, anche la firma è diversa, e i 2 metodi vengono accettati entrambi. In C# non è così? Come posso risolvere ?
    La motivazione è semplice: non sei costretto a utilizzare il valore che viene restituito da un metodo, ad esempio assegnandolo a una variabile.
    Oppure ancora, la variabile potrebbe essere dichiarata con var, quindi assumere automaticamente il tipo restituito dal metodo.

    In questi casi, come potrebbe il compilatore distinguere qual è la versione corretta del metodo da richiamare?

    Come già detto, ciò vale sia per C# che per VB.NET.

    Ciao!
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Homepage | Blog | Delphi Podcast | Delphi Succinctly (e-book)

+ Rispondi al Thread

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi