public Alphabet(params char[] list)
{
this.ExceptionInitializer();
try
{
if (list != null) _alphabet = list;
else throw this.NullableAssignment; //add exception handler;
this._charCounter = list.Length;
}
catch (this.NullableAssignment)
{
// var x = new Alphabet();
// this = x; //FAIL!
}
}
Répondre
Vous ne pouvez pas le faire - la chose la plus proche serait de créer une méthode de fabrication statique qui retourne un Alphabet
:
public class Alphabet
{
private Alphabet(params char[] list)
{
//setup
}
public static Alphabet Create(params char[] list)
{
return list == null
? new Alphabet()
: new Alphabet(list);
}
}
Bien donné votre exemple , serait tout simplement encore plus simple d'attribuer un tableau vide à la place de null:
public Alphabet(params char[] list)
{
_alphabet = list ?? new char[] { };
this._charCounter = _alphabet.Length;
}
Je ne sais pas ce que vous essayez de faire. Pouvez-vous afficher ExceptionInitializer et NullableAssignment? Voulez-vous affecter un tableau vide à _alphabet
lorsque aucun paramètre n'est transmis?
public Alphabet(params char[] list)
{
if(list != null)
{
_alphabet = list;
}
else
{
_alphabet = new char[0];
}
this._charCounter = _alphabet.Length;
}
Cela fonctionne pour un certain nombre d'arguments, ou un nul explicite:
new Alphabet('f', 'o', 'o')
new Alphabet()
new Alphabet(null)
Le code que vous proposez est pas valide en C#, vous ne pouvez affecter aucune valeur à ce. Ce que vous pouvez faire est d'utiliser un appel à un constructeur par défaut comme ceci:
public Alphabet() { /* Do some default initialization here */ }
public Alphabet(params char[] list) : this() // The call to the default constructor.
{
if (list != null)
{
_alphabet = list;
this._charCounter = list.Length;
}
}
Je devine que vous voulez que le constructeur de Alphabet
pour traiter les éléments de list
, à moins que list
est vide auquel cas un spécial "objet vide" doit être utilisé. Ceci, malheureusement, ne peut pas être accompli en utilisant un constructeur normal. Qu'est-ce que vous avez besoin est plutôt une méthode de fabrication:
private static Alphabet _emptyAlphabet = new Alphabet();
private Alphabet(char[] list) { /* etc */ }
public Alphabet CreateAlphabet(params char[] list)
{
if (list == null)
{
return _emptyAlphabet;
}
else
{
return new Alphabet(list);
}
}
public Alphabet() {
ConstructEmptyAlphabet();
}
public Alphabet(char[] list) {
if (list == null) {
ConstructEmptyAlphabet();
} else {
_alphabet = list;
this._charCounter = list.Length;
}
}
private void ConstructEmptyAlphabet() {
…
}
- 1. Sinatra/Rails: Persistance des instances de classe personnalisées pendant la durée de vie de l'application
- 2. Appel du constructeur de classe enfant avant le constructeur parent
- 3. Comptage des instances d'une classe dans AppDomain
- 4. Obtenir le constructeur de classe
- 5. Affecter une classe parente à une classe lors de l'exécution?
- 6. Constructeur de classe dans le modèle
- 7. Classe Functor travaillant dans le constructeur
- 8. PHP comment affecter des variables de propriété de classe conditionnellement
- 9. Créer des instances d'une classe qui a besoin d'un argument constructeur avec StructureMap
- 10. Validation des données du constructeur
- 11. C++ instances de classe
- 12. Comment rendre le constructeur de classe privé dans Ruby?
- 13. Passant une autre classe parmi les instances
- 14. Comment affecter un fichier de configuration différent pendant l'exécution du package SSIS?
- 15. Classe PHP non existant dans le constructeur
- 16. Comment bien affecter un gestionnaire d'événements à HtmlDocument.MouseDown en C#?
- 17. Liste des types personnalisés et des instances de la classe
- 18. Comment initialiser un vecteur dans le constructeur d'une classe
- 19. C# Héritage: Comment appeler le constructeur de la classe de base quand j'appelle le constructeur de la classe dérivée
- 20. Création automatique du constructeur, selon la classe parent constructeur (C++)
- 21. constructeur de classe
- 22. Classe Constructeur/Setter
- 23. Répondre aux événements de suppression des applications pendant l'initialisation de la classe
- 24. Caractère imbriqué dans le constructeur de la classe dans scala
- 25. Dois-je utiliser des objets passés au constructeur pendant l'injection?
- 26. Comprendre les instances de la classe Python
- 27. Arguments du modèle C++ dans le constructeur
- 28. Comment "cacher" des fichiers du constructeur d'interface?
- 29. Constructeur pour la classe
- 30. Affecter des indices au niveau du groupe pendant ou après la fonte
Je veux utiliser constru ctor sans paramètres pour créer un alphabet anglais par défaut. Je pense que l'utilisation d'une méthode d'usine est la meilleure façon de résoudre mon problème. Merci à vous tous – xWoundwortx