75 votes

Qu'est-ce qu'une classe interne scellée en C #?

Je cherchais dans un code C # une extension de la prise en charge linguistique dans VS2010 (exemple Ook). J'ai vu des classes appelées internal sealed class

Que font-ils? Est-ce qu'on pourrait les utiliser?

Merci

159voto

Tim Lloyd Points 23571

C'est une classe que:

  • internal: Ne peut être accessible depuis l'intérieur de l'assemblée il est défini (ou un ami assemblées).
  • sealed: Ne peut pas être héritée.

Marquage des classes internal est une façon de prévenir les utilisateurs externes d'un assemblage de leur utilisation. C'est vraiment une forme de conception de l'encapsulation et à mon humble avis il est de bonne pratique pour marquer les types qui ne font pas partie de l'API publique\modèles d'objet en tant que internal. Dans le long terme, cela empêche les utilisateurs de votre bibliothèque à partir de couplage eux-mêmes à des types que vous n'avez pas l'intention de le faire. Ce genre d'imprévus couplage nuit à votre capacité de changer et de faire évoluer la manière de vos bibliothèques sont mises en œuvre que vous ne pouvez pas les modifier sans casser vos clients. À l'aide de internal aide à garder le public et la surface utile d'une bibliothèque de ce qui est prévu.

Marquage des classes sealed empêche ces classes d'être héritée. C'est une question assez drastique de l'intention de conception qui est parfois utile si une classe est déjà tellement spécialisés qu'il est raisonnable qu'aucun autre fonctionnalité devrait être ajouté via l'héritage, soit directement ou par l'intermédiaire primordial de son comportement.

internal et sealed modifier les types de manières très différentes, mais ils peuvent être utilisés ensemble.

NB Vous avez certains de délimitation de l'étendue du contrôle de l' internal que vous pouvez définir un ensemble d'autres assemblées des "amis". Ces ami assemblées peuvent accéder à votre internal types. Cela peut être utile pour définir des ensembles de co-exploitation des assemblées telles que la production et montages d'essai. Il est souvent souhaitable qu'un montage d'essai pouvez voir tous les types dans l'assemblée, c'est de le tester.

20voto

HyLian Points 2058
  • internal: une classe accessible uniquement dans le même assemblage.

    Assembly1.dll:

     namespace test {
        internal class InternalClass {
        }
    
        public class PublicClass { 
        }
    } 
     

    Assembly2.dll:

     using test;
    ...
    InternalClass c1; // Error
    PublicClass c2; // OK
     
  • scellé: Une classe qui ne peut pas être dérivée de

     sealed class SealedClass { ... }
    
    class ChildClass : SealedClass {} //ERROR
     

13voto

HABJAN Points 5681

Interne signifie que le membre est accessible aux autres types définis dans le même assemblage. Une classe scellée est en quelque sorte l'opposé de l'abstrait. Il peut être instancié mais ne peut pas servir de classe de base. La principale raison de sceller une classe est d'empêcher vos utilisateurs de la manipuler et de la casser. De plus, le scellement d'une classe permet certaines optimisations du compilateur qui ne sont pas possibles avec des classes non scellées.

6voto

Powerlord Points 43989

Une classe internal sealed est une classe qui est:

internal - Uniquement accessible depuis le même assemblage
sealed - Ne peut pas être sous-classé

En d'autres termes, vous ne pouvez pas l'utiliser directement.

4voto

ArsenMkrt Points 24447

Interne signifie qu'il peut être utilisé seulement dans la même assemblée,

Le mot clé internal est un accès modificateur pour les types et les membres de type. Interne les types ou les membres sont accessible uniquement à l'intérieur des fichiers dans le même assemblée

scellé qui ne peut pas être héritée

Une classe scellée ne peut pas être héritée. Il est une erreur d'utiliser une classe scellée comme un classe de base. L'utilisation du modificateur dans une déclaration de classe pour éviter l'héritage de la classe.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X