Visualizzazione dei risultati da 1 a 6 su 6
  1. #1

    [c#] aiuto x capire errore

    Ciao a tutti.
    devo modificare un programma fatto da altri, e tra l'altro sono anche nuovo nel c / c#...
    ho caricato i sorgenti del cliente nel visual studio 2005 e mi da degli errori sulla riga sotto, riguardo al "predicate". Qualcuno puo darmi una mano a capire cos'e e come si usa sto affare? xche nn ho trovato nessun esempio esaustivo...

    codice:
     if (Array.Exists<string>(Machine.imageFileExt, (Predicate<string>) (s => s == ext)) || Array.Exists<string>(Machine.videoFileExt, (Predicate<string>) (s => s == ext)))
    Grazie mille

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320

    Moderazione

    Il titolo della discussione dovrebbe dare l'idea del contenuto della discussione. Il 99% delle discussioni su questi forum sono di "aiuto per capire errori", quindi per le prossime volte cerca di usare titoli più significativi.

    Inoltre, dovresti fornire il messaggio completo di errore, non le tue "interpretazioni": il compilatore ha dei messaggi di errore che gli utenti conoscono e possono capire.

    Posta, inotre, nel forum corretto: i linguaggi .NET vengono tratatti nel forum "Visual Basic e .NET Framework".


    Sposto e correggo il titolo.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  3. #3
    Utente di HTML.it L'avatar di rsdpzed
    Registrato dal
    Aug 2001
    Messaggi
    764
    il predicate<string> è una funzione anonima che data una stringa in input ritorna un valore booleano.

    (s => s == "pippo");

    è un predicate che ritorna true se la stringa s è uguale a "pippo", quindi è un Predicate<string>, la variabile s è l'argomento di input. Non c'è bisogno del cast (Predicate<string>) perche il compilatore lo evince dal tipo di array che la sta usando Se si osse trattato di un array di int s sarebbe di tipi int e il predicate sarebbe stato un Predicate<int>. Se inizi a scriverla, infatti, e ti avvicini con il mouse alla variabile s da visual studio vedrai che Intellisense ti dice gia che s è di tipo string anche senza il cast.
    Il corpo vero e proprio della funzione si trova a destra dell'operatore => e visto che deve ritornare implicitamente un booleano deve trattarsi di un test (s == "pippo"). A sinistra dell'operatore => si trova il parametro di input a cui dai un nome a piacere, nel tuo caso s.

    La comodità è data dal fatto che è possibile scrivere al volo dei delegate da dare in pasto ad un altra funzione che ne farà uso senza scrivere chissà quanto codice.

    La sintassi, al di la del fatto che dovresti eliminare i cast, sembra giusta perciò l'unico modo per aiutarti è quello di capire che tipo di errori in particolare stai avendo.

  4. #4
    Originariamente inviato da rsdpzed
    ......
    La sintassi, al di la del fatto che dovresti eliminare i cast, sembra giusta perciò l'unico modo per aiutarti è quello di capire che tipo di errori in particolare stai avendo.
    Ciao,
    l'OP ha detto di usare il vs2005 (quindi il .net 2) e, se ben ricordo, non mi sembra
    che le lamda expression fossero supportate in quella versione

  5. #5
    Utente di HTML.it L'avatar di rsdpzed
    Registrato dal
    Aug 2001
    Messaggi
    764
    allora passagli un Predicate "vecchia maniera" e non uno anonimo.

  6. #6
    scusate, sono scemo io, l'errore me lo dava su VS 2010
    Stesso codice in CS 2005 non mi da alcun errore.
    Ne ho tanti altri invece ))

    Siccome ho difficolta nel far andare il progetto, sistemo un errore e ne vengono fuori altri 10, volevo chiedere a qualcuno di voi che di C# se ne intende, se mi potete mandare magari in privato un Vs contatto per poter chiedere quando ho bisogno qualche dritta(ovviamente se ne avete voglia).

    Grazie Mille!

    PS: grazie rsdpzed della spiegazione, finalmente ho capito cosa fa esattamente quel codice

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.