2009-06-24 5 views
2

J'ai une classe qui commence à être grande. Comment puis-je le définir afin que les méthodes puissent s'étendre sur différents fichiers .cs?C# Comment définir des méthodes pour la même classe dans des fichiers multi-formats?

+0

http://msdn.microsoft.com/en-us/library/wa80x488(VS.80).aspx – rahul

+6

Alors que les partiels sont en effet très agréable, s'il vous plaît arrêtez-vous un instant et demandez-vous si votre classe en fait peut-être trop . Si votre description de la fonction de classe est "Eh bien, elle fait X et Y et Z", vous pourriez vouloir la diviser en trois classes XY et Z. C'est un peu difficile de tout diviser mais votre code finira bien plus propre et plus facile à entretenir. Ou votre classe pourrait déjà être aussi petite que possible, bien sûr dans ce cas je vais juste me taire :) – Jauco

+1

D'accord avec Jauco. Je pense que les partiels ont été principalement introduits pour séparer le code généré par le concepteur du code écrit par l'utilisateur, plutôt que de faire d'énormes classes. Mais parfois, il n'y a pas moyen de contourner. – OregonGhost

Répondre

10

Vous pouvez déclarer votre classe en tant que partial. Cela vous permet de le diviser en plusieurs fichiers.

// File 1: 
partial class Test { 
    public void Method1() { … } 
} 

// File 2 
partial class Test { 
    public void Method2() { … } 
} 
+0

Pourquoi cela a-t-il été déprécié? –

3

Utilisez le mot-clé partial.

Foo.cs 

public partial class Foo 
{ 
    ..... 
} 


xFoo.cs 

public partial class Foo 
{ 
...... 
} 

Cependant, si votre classe devient grand, il est probablement un peu d'une odeur de code et le temps de penser à refactoring.

1

Il peut être agréable d'avoir plusieurs fichiers plus petits, mais il sera plus difficile de trouver le bon code quand il est divisé entre deux fichiers.

+0

Je suis d'accord. Typiquement, partial n'est approprié que lorsqu'une partie de la classe est générée automatiquement. Sinon, il suffit d'avoir un gros fichier de classe bien organisé, ou bien de refactoriser (plusieurs classes avec des responsabilités logiques). –

+1

D'accord avec ck, même si ce n'est pas une réponse à la question et aurait donc dû être écrit comme un commentaire, comme Jauco. – OregonGhost

Questions connexes