IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

méthodes d'extensions définies dans une classe statique non générique


Sujet :

C#

  1. #1
    Membre régulier
    Homme Profil pro
    Responsable Applicatif / Développeur
    Inscrit en
    Mai 2007
    Messages
    495
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Responsable Applicatif / Développeur

    Informations forums :
    Inscription : Mai 2007
    Messages : 495
    Points : 110
    Points
    110
    Par défaut méthodes d'extensions définies dans une classe statique non générique
    j'ai un message d'erreur : les méthodes d'extension doivent etre définies dans une classe statique non générique.

    Mais le problème est que ma class n'est pas une extension.

    Voici mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    public class Problem10
             {
                 public Problem10() { }
     
                 public void Prob10()
                 {
                     long res = GeneratePrimes();
                     Console.WriteLine("Result 10 => {0}", res);
                     Console.ReadKey(true);
     
                 }
     
     
     
                 public static IEnumerable<long> GeneratePrimes()
                 {
     
                     var range = Enumerable.Range(2, int.MaxValue - 1);
     
                     var answers = from number in range
     
                                   where number.IsPrime()
     
                                   select (long)number;
     
     
                     return answers;
     
                 }
     
     
                 private static bool IsPrime(this int number)
                 {
     
                     bool isPrime = knownPrimes.TakeWhile(n => n * n <= number).
     
                         TrueForAll(n => number % n != 0);
     
                     if (isPrime)
     
                         knownPrimes.Add(number);
     
                     return isPrime;
     
                 }
     
     
                 public static bool TrueForAll<T>(this IEnumerable<T> sequence, Predicate<T> test)
                 {
     
                     foreach (T item in sequence)
     
                         if (!test(item))
     
                             return false;
     
                     return true;
     
                 }
             }

  2. #2
    Membre régulier
    Homme Profil pro
    Responsable Applicatif / Développeur
    Inscrit en
    Mai 2007
    Messages
    495
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Responsable Applicatif / Développeur

    Informations forums :
    Inscription : Mai 2007
    Messages : 495
    Points : 110
    Points
    110
    Par défaut
    Enfin en fait ce qu'il faudrait que je comprenne c'est comment le compilateur fait la différence entre une méthode d'extension et une autre.

    Pouvez vous m'expliquer SVP?

  3. #3
    Membre émérite Avatar de Guulh
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    2 160
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2007
    Messages : 2 160
    Points : 2 925
    Points
    2 925
    Par défaut
    Ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    private static bool IsPrime(this int number)
    est une méthode d'extension (à case du mot-clé this), et elle se situe dans une classe non statique, d'où le message d'erreur.

Discussions similaires

  1. [Débutant] Ajouter les images définies dans une classe à ma form
    Par MPothin dans le forum Windows Forms
    Réponses: 5
    Dernier message: 03/09/2014, 11h16
  2. Réponses: 4
    Dernier message: 17/03/2007, 01h06
  3. Tableau de constantes dans une classe statique
    Par Nico_stras dans le forum C#
    Réponses: 4
    Dernier message: 05/03/2007, 20h18
  4. Créer une liste d'objets statiques dans une classe
    Par crossbowman dans le forum C++
    Réponses: 3
    Dernier message: 13/03/2006, 09h11
  5. membre statique dans une classe
    Par motrin dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 30/12/2005, 15h15

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo