Ich folge einer Konvention, dass ich keine print-Anweisungen in Klassen verwenden werde, aber ich habe eine Parameterüberprüfung in einem Konstruktor durchgeführt. Bitte sagen Sie mir, wie ich diese Validierung, die ich im Konstruktor gemacht habe, an die Main-Funktion zurückliefern kann.Wie gibt man einen Wert mit Konstruktor in C# zurück?
Antwort
Der Konstruktor hat einen Wert zurückgeben - die Art aufgebaut ist ...
Ein Konstruktor soll nicht jede andere Art von Wert zurückzukehren.
Wenn Sie in einem Konstruktor validieren, sollten Sie Exceptions auslösen, wenn die übergebenen Werte ungültig sind.
Konstruktoren haben keinen Rückgabetyp, aber Sie können Werte anhand des Schlüsselworts ref
als Referenz übergeben. Es wäre besser, eine Ausnahme vom Konstruktor zu werfen, um einen Fehler bei der Validierung anzuzeigen.
public class YourClass
{
public YourClass(ref string msg)
{
msg = "your message";
}
}
public void CallingMethod()
{
string msg = string.Empty;
YourClass c = new YourClass(ref msg);
}
Dass Sie _can_ nicht Sie _should_ bedeuten können. – Oded
Wenn ein Konstruktor ein ungültiges Argument erhält, ist es üblich, eine Ausnahme auszulösen. Sie können diese Ausnahme abfangen und die darin enthaltenen Daten analysieren.
Ein Konstruktor gibt den Typ zurück, der instanziiert wird, und kann bei Bedarf eine Ausnahme auslösen Vielleicht eine bessere Lösung wäre eine statische Methode zu hinzuzufügen versuchen eine Instanz der Klasse zu erstellen:
public static bool TryCreatingMyClass(out MyClass result, out string message)
{
// Set the value of result and message, return true if success, false if failure
}
einen Constructor Stelle mit Out-Parametern und Ihren Rückgabewert über denselben senden.
public class ClassA
{
public ClassA(out bool success)
{
success = true;
}
}
Deine Klasse ist zu zerbrechlich, wenn es dazu kommt. –
- 1. Wie gibt man mit RxJava einen Wert zurück?
- 2. Wie gibt man mehr als einen Wert in Java zurück?
- 3. Wie gibt man einen Wert mit anonymer Methode zurück?
- 4. Wie gibt man in Python einen Wert von __init__ zurück?
- 5. Wie gibt man einen Wert in Excel UDF-Funktion zurück?
- 6. C++ - Konstruktor des Klassentyps gibt einen Lvalue zurück?
- 7. Wie gibt man einen Wert von einem Lambda-Ausdruck zurück?
- 8. Wie gibt man einen Wert für ein Ereignis zurück?
- 9. NSDecimalNumber gibt einen falschen Wert zurück uint64_t
- 10. Gibt es einen generischen Konstruktor mit Parameterbeschränkung in C#?
- 11. Wie gibt man einen zufälligen Parameter zurück?
- 12. Gibt es einen Standardkonstruktor mit einem statischen Konstruktor in C#?
- 13. Mysqli-Konstruktor gibt null zurück
- 14. LINQ gibt einen Wert IEnumerable zurück
- 15. g_hash_table_contains gibt einen unerwarteten Wert zurück
- 16. mysql_fetch_assoc() gibt einen unerwarteten Wert zurück
- 17. Warum gibt printf einen Wert zurück?
- 18. SPContext.Current.Web.CurrentUser gibt einen irreführenden Wert zurück
- 19. __NSCFNumber gibt einen negativen Wert zurück
- 20. Warum gibt this.prop im Konstruktor undefined zurück
- 21. Wie erstellt man Objekte mit dem Konstruktor und gibt das Zufallsergebnis mit der aufgerufenen Methode zurück?
- 22. Wie man einen Konstruktor in Kleinbuchstaben "zeigt"
- 23. strtok() gibt falschen Wert in C99 zurück?
- 24. DataReader gibt keinen Wert zurück?
- 25. Wie gibt man einen Wert aus der Funktion zurück, die von der Factory übergeben wurde?
- 26. Wie gibt man den Wert auf GoogleApiClient onConnected() zurück?
- 27. Warum gibt der Zuweisungsoperator den zugewiesenen Wert in C# zurück?
- 28. Wann gibt Double.ToString() einen Wert in wissenschaftlicher Schreibweise zurück?
- 29. Wie gibt man einen Wert von einem Closure in Swift zurück?
- 30. Wie gibt man mehr als einen Wert von einer Funktion in Python zurück?
Oohh, ich wünschte, ich könnte tausend Mal abstimmen. Es ist so ermüdend mit diesem permissiven Validierungsstil, der sich wie Krebs ausbreitet. – jgauffin
@jgauffin - Welchen Stil meinst du? – Oded
Zum Beispiel mit DataAnnotation Attribute auf Ihre Domain/Geschäftsmodelle. d.h. zulassen, dass Objekte ungültige Informationen haben und sich auf den aufrufenden Code verlassen, um sicherzustellen, dass alles validiert und korrekt ist. Sie wissen, .. Verletzung Kapselung. – jgauffin