2016-06-16 7 views
1

Meine Sprache ist C#.Wie kann ich wissen, dass das Objekt total wie obj1 = obj2 geändert wird?

obj1.Value = "test"; 

Wenn der Objektwert so geändert wird, ist es einfach zu handhaben. Ich kann den Ereigniscode in Name Property Set setzen.

Aber

Class obj1 = new Class("string1"); 
obj1 = new Class("string1"); 

Wenn das Objekt durch Zuordnung wie folgt geändert wird, Wie kann ich wissen, dass und es behandeln?

Ich möchte Name Länge begrenzen und es wird durch eine andere Eigenschaft "Länge" begrenzt.

Ich habe 3 Konstruktoren.

Class(string value); 
Class(int length); 
Class(int length, string value); 

Und 2 Eigenschaften.

.Value 
.Length 

machte ich ähnliche diese

Class obj1 = new Class(3, "ab") 

Mein Problem ist obj1.

obj1 = new Class("abcde") 

I Wert Länge 3, aber die Länge der neuen Klasse („ABCDE“) begrenzen will, ist 5. (Es kann anderen Wert hat durch Codierung, aber in meinem Fall Länge 5)

Wie kann ich es lösen?

+0

1- Sie sollten die Sprache angeben, die Sie verwenden. Zum Beispiel könnten Sie in C++ den Operator "=" überladen, um dies zu umgehen. Es ist jedoch wahrscheinlich in den meisten Sprachen nicht möglich, nach einer Referenzänderung zu suchen. 2- Was ist der Zweck davon? Was versuchst du wirklich damit? – Walfrat

+0

@Walfrat 1. Entschuldigung, meine Sprache ist C#. Es scheint, dass "=" Überladen in C# nicht möglich ist. Recht? 2. Ich möchte die Länge der Namenseigenschaft auf 10 beschränken. – jeonggu

+0

Sie müssen nicht wissen, ob sich das Objekt geändert hat, oder? überprüfen Sie einfach die Länge im Setter vielleicht? – n1ff

Antwort

0

Sie können die Länge der Zeichenfolge im Konstruktor überprüfen. Wenn die Länge den Grenzwert überschreitet, können Sie eine neue Ausnahme auslösen. Auf der Seite der Objektinitiierung können Sie try catch block verwenden, um zu überprüfen, ob das Objekt korrekt initialisiert wurde oder nicht. Beispiel:

class Class 
{ 
    public Class(string string1) 
    { 
     if(string1.Length > 10) 
      throw new Exception("Length Exceeded than limit"); 
    } 
} 

class Program 
{ 
    static void Main() 
    { 
     Class obj; 
     try 
     { 
      obj = new Class("stri"); 
     } 
     catch 
     { 
      MessageBox.Show("Error"); 
     } 
    } 
} 
+0

Ich habe meine Frage bearbeitet. sehen Sie wieder und geben Sie mir eine Hilfe. Danke. – jeonggu

+0

@jeonggu Laut Ihrer Eingabe ist dies für mich nicht möglich. Ich habe viele andere mögliche Lösungen für Ihr Problem.Wenn Sie mir Ihr Problem kurz mitteilen, ist es möglich, dass ich Ihnen eine viel bessere Lösung geben kann. –

+0

Ich habe wissen was ich brauche ist = Operator überladen, aber es ist nicht möglich in C#. Danke für Ihre Aufmerksamkeit. – jeonggu