hm…ob das mit ner Property geht weis ich nicht, ich würde das aber ganz einfach mit einer Public Variable ösen. Die ist ja dann auch aus anderen Klassen zugänglich.
hm…ob das mit ner Property geht weis ich nicht, ich würde
das aber ganz einfach mit einer Public Variable ösen.
Und wie soll ich bitte kontrollieren wann diese Variable geändert wurde ?
Und wie kann man bei Variablen die Zuweisung ungültiger Werte verhindern ?
Wie gesagt: ich _brauche_ eine Property.
Jetzt mal ganz ehrlich: kann man mit VB .NET irgendwas ausser dem About-Dialog schreiben ? Ich arbeite jetzt seit 3 Wochen damit und hab schon einen Fehler im Compiler gefunden.
(Ich greife in einer Klasse A auf eine public variable der Klasse B zu. Bei dem Namen der Variable hab ich mich aber in der Klasse A vertippt, der letzte Buchstable fehlt. Der Compiler baut mir trotzdem ohne Fehlermeldungen eine exe. Die exe schmiert ab … klasse compiler, genau das richtige zum debuggen von fremden, unkommentiertem Code…)
Deine Aussage unten, dass ein VB.NET-Compiler Syntaxfehler nicht finden soll, halte ich für sehr unwahrscheinlich. Ich nehme mal an, Du nimmst den vbc vom .NET SDK 1.1 unter Windows, oder? Der meckert definitiv bei solchen Sachen!
Wie auch immer, StackOverflowExceptions bekommst Du am leichtesten, wenn Du mit Properties hantierst und dort dann nicht mit der zugrunde liegenden Variablen arbeitest, sondern z.B. dem Property wieder den Wert zuweist - herrliche Endlosrekursion.
Die Verwendung eines Arrays als Property ist prinzipiell genau so möglich wie bei jedem anderen Typ, aber damit wirst Du nicht glücklich werden. Du bekommst nicht mit, wenn am Array etwas geändert wird, weil jeweils nur die Referenz auf das Array verwaltet wird - Property hin oder her. Du könntest höchstens feststellen, wenn ein komplett neues Array zugewiesen wird, aber ich bezweifle, dass Dir das etwas bringt.
Du bräuchtest also eine Collection, die Ereignisse beim Einfügen/Löschen/usw. von Elementen generiert, auf die Du dann reagieren kannst.
Z.B. hier: http://dorm.tunkeymicket.com/csharp/UtilityLibrary/C… gibt’s den Code für so eine CollectionWithEvents (zwar in C#, aber Du kannst Dir daraus ja eine Klassenbibliothek machen und diese dann von VB.NET aus verwenden.
Gruß,
Martin
[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]
Dafür wäre eher das Brett ‚.NET und C#‘ zuständig
Denn: Visual Basic.NET != Visual Basic
…und die .NET Version haben wir schon wieder vergessen. .NET 2.0 ist besser als .NET 1.1x
(Ich greife in einer Klasse A auf eine public variable :der
Klasse B zu. Bei dem Namen der Variable hab ich mich :aber in
der Klasse A vertippt, der letzte Buchstable fehlt. Der
Compiler baut mir trotzdem ohne Fehlermeldungen eine :exe.
Keine IntelliSense ?
Die
exe schmiert ab … klasse compiler, genau das richtige :zum
debuggen von fremden, unkommentiertem Code…)
Deine Aussage unten, dass ein VB.NET-Compiler Syntaxfehler
nicht finden soll, halte ich für sehr unwahrscheinlich. Ich
nehme mal an, Du nimmst den vbc vom .NET SDK 1.1 unter
Windows, oder?
Visual Studio 2003 mit NET Framework 1.1 und CompactFramework X.Y
Ich nehm an das rebuild war nicht komplett. Das kenn ich schon von java. Wie der aber die exe zusammenbekommen hat ist mir ein Rätsel. Wenn ich’s nochmal hinbekomme kann ich die exe ja irgendwo posten. Was wirklich sinnvolles wird die ja dann eh nicht tun.
Wie auch immer, StackOverflowExceptions bekommst Du am
leichtesten, wenn Du mit Properties hantierst und dort dann
nicht mit der zugrunde liegenden Variablen arbeitest, sondern
z.B. dem Property wieder den Wert zuweist - herrliche
Endlosrekursion.
OK, d.h. der im set-Teil sich selbst setzt dreht er am Rad. OK, das kann man verstehen. Dann wird meine Event-kette etwas rekursiv ausgefallen sein *g*
Die Verwendung eines Arrays als Property ist prinzipiell genau
so möglich wie bei jedem anderen Typ, aber damit wirst Du
nicht glücklich werden. Du bekommst nicht mit, wenn am Array
etwas geändert wird, weil jeweils nur die Referenz auf das
Array verwaltet wird - Property hin oder her.
Autsch.
Ich seh doch in den API ständig Properties mit Klasse.Item(index as integer). Der bekommt da auch nicht mit wenn einer mit Klasse.Item(12) = irgendwas rangeht ?
Du könntest
höchstens feststellen, wenn ein komplett neues Array
zugewiesen wird, aber ich bezweifle, dass Dir das etwas
bringt.
Nee, nicht wirklich.
Du bräuchtest also eine Collection, die Ereignisse beim
Einfügen/Löschen/usw. von Elementen generiert, auf die Du dann
reagieren kannst.
Z.B. hier:
Das sieht doch gut aus, damit kann man doch mal was anfangen. Werds morgen mal auf der Arbeit vorschlagen.
Das ganze Gewusel um .NET ist ja sowas von übersichtlich und klar benannt. Da fühle ich mich glatt wie zuhause bei java, J2ME, CLDC, MIDP und javaskript.
OK, als VB .NET ist näher an C# .NET (gibt’s C# auch ohne .NET ?) als an VB ?
Da war ich schon. Aber wenn du nach dem Modus arrays baust dreht irgendwas am Rad …
Keine IntelliSense ?
Ich tipp aus Gewohnheit ohne grossartig auf Popups zu achten. Es ist subjektiv schneller den ganzen Schmoder zu tippen als die popups zu lesen und was aus der Liste auszuwählen. OK, dafür verbrate ich pro 1-2 Compilierversuche auf Tippfehler…