Dravere schrieb:
Zu den Büchern hätte ich viel lieber noch ein zwei Meinungen, dann kann ich die Liste endlich abschliessen
Meine (sehr schlechte Meinung) von Galileo und Markt+Technik sollte vielleicht schon bekannt sein, daher gehe ich auf das erste Buch nicht ein.
Beim zweiten kenne ich nur den Vorgänger, den hatte ich persönlich aber als zu oberflächig empfunden. Wobei der Griff zu Addison Wesley Büchern selten ein kompletter Fehlkauf ist.
Gute Erfahrungen mit den C# Büchern hatte ich persönlich mit den spezialisierteren Bücher aus den Verlagen: Apress, Wrox, Manning.
Wobei ich hier auch nicht ein Buch sondern Viele in Kombination meine (Als Ausgangspunkt verwende ich z.B. Pro C# 2008 and the .NET 3.5 Platform (Apress)). Dieser Wälzer zeigt sowohl die C# Sprachmittel und die wesentlichen Bibliotheksteile, ist aber alleine schon wegen seinen Umfang ausführlicher. Zu einzelnen Themen (wie z.B. WPF) suche ich mir dann weiterführende Literatur.
Ich bezweifel es zwar: aber wenn du zufälligerweise ab und zu in der Region Siegen oder Kassel unterwegs sein solltest, kann ich dir gerne einige Bücher zur Einsicht geben oder ausleihen... (Meine C# Bücher stehe aufgrund meiner derzeitigen Stelle zum Großteil unbenutzt auf 1-2 Regalbrettern rum).
cu André
Ok, danke!
ich entdecke nur gerade keinen sinn, warum man ein konstantes arraay mit null initialisieren sollte, bzw warum string eine sonderbehandlung verdient haben, aber ok, jettt scheints zu funktionieren.
DAs ist ja aber auch das, was ich meinte.
nur einzelne deklarationen, die man in seinen Code kopiert.
hat denn noch niemand eine Klasse geschrieben, in der alles schon deklariert ist.
sich jedes mal die konstanten in seinem Program zu kopieren, ist ja auch nicht grad schön.
Wenn man sowas in c/c++ macht wird man schief angeschaut, weils natürlich eine potetielle Fehlerquelle ist.
BorisDieKlinge schrieb:
brauch einen Tree container mit Hash funktionalität... zugriff auf knoten mit nem KKey und value als inhalt der Knoten.
Was meinst Du damit? Normalerweise gilt, dass ein Dictionary *entweder* per Hashtablle implementiert wird, *oder* als Baum. Nicht beides.
Eine Hashtabelle gibt's in .NET via `System.Collections.Generic.Dictionary`. Eine Implementierung als Binärbaum gibt's über `System.Collections.Generic.SortedDictionary`.
Das Feature wurde übrigens absichtlich aus C# weggelassen, mit der Begründung, es würde zu schlechtem Code führen. Was wurden wir VB-Programmierer dafür ausgelacht, dass wir sowas freiwillig benutzen. Zum Glück hat das C#-Team da seine Meinung endlich geändert.
Thx Mr. Evil..!
Hätte jetzt mittlerweile beim Testen verschiedener Sachen mal ne andere Frage, die auch mit der ComboBox zu tun hat. Und zwar:
Wenn man eine ComboBox Adden will, geht es doch ganz einfach mit
Controls.Add(ComboBox);
Aber wenn man die dann mal entfernen will, geht das nicht so einfach, also mit:
Controls.Remove(ComboBox);
In MSDN (http://msdn.microsoft.com/de-de/library/aa984275(VS.71).aspx)
steht, dass man den Ereignishandler vom Ereignis entfernen soll mit -=, dann den Remove-Befehl und dann ein Dispose-Befehl. Auf der Seite gibt es auch ein Beispiel mit einem Button. Meine Frage wäre jetzt, wieso man den Ereinishandler vom Ereignis entfernen soll, also wieso dieser Befehl mit dem -= ..?
Ich meine wenn ich das Steuerelement enferne, funktioneirt dann sowieso kein Ereigniss mehr, wieso dann solch Aufwand..?
Und habe versucht das Beispiel von dieser Seite in einem Beispiel mit ner ComboBox auszuprobieren und bei mir klappt es nicht, hier der Code..:
(Habe ComboBox1 grafisch erstellt mit 2 Items("1"und"2"), wenn man 1 wählt passiert was, wird bei obox_SelectedIndexChanged behnadelt und ist grad unwichtig, wenn man aber 2 wählt, dann soll die erste ComboBox, die ich grafisch erstellt habe von der Form entfernt werden..!)
private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
{
ComboBox obox = new ComboBox();
if (comboBox1.SelectedItem.Equals("1"))
{
obox.Location = new Point(42, 87);
Controls.Add(obox);
obox.Items.Add("a");
obox.Items.Add("b");
obox.Items.Add("c");
obox.SelectedIndexChanged += new EventHandler(obox_SelectedIndexChanged);
}
if (comboBox1.SelectedItem.Equals("2"))
{
if (Controls.Contains(obox))//Hier is irgendwo der fehler
{ // ------
obox.SelectedIndexChanged -= new System.EventHandler(obox_SelectedIndexChanged);
Controls.Remove(obox);
obox.Dispose();
} // ------
}
}
Wo ist mein Fehler..?
Events kann man auch nicht von aussen "überschreiben" (d.h. man kann zwar += und -= machen, aber nicht =), und auch nicht von aussen aufrufen. Der generierte IL Code ist AFAIK allerdings ähnlich bzw. sogar gleich wie bei einem "public delegate" Member (vorausgesetzt natürlich man überschreibt die add/remove/raise Methoden nicht).
Erlich gesagt verstehe ich deine Frage nicht.
... es spielt also keine Rolle ob ich einen Klasse oder einen Struct als Datentyp definiere?
struct bedeutet wertartig, class bedeutet es handelt sich immer um eine Referenz. Wertartige Typen können geboxt werden und haben dann ebenfalls Referenzsemantik.
Demnach habe ich auch die Möglichkeit über ein Interface einen solchen zu definieren, eine abstrakte Klasse, einen struct, etc. ...
Ich nehme mal an, das bezieht sich wieder auf dein ersten Post und somit auf abstrakte Datentypen.
Struct sind niemals abstrakt, Interfaces generell, Klassen optional.
OK, das "ihr" sollte ich zurücknehmen, da ich mich eigentlich nur auf die 2 Kommentare von "omfg" bezogen habe. Die ich für Blödsinn halte. Ich hatte zuerst nicht so genau darauf geachtet wer genau was geschrieben hat.
Klar ist XNA toll, und klar kann man damit tolle Spiele machen die auch schnell genug laufen. Aber zu behaupten XNA bzw. C# im Allgemeinen würde C++ von der Performance her nichts nachstehen ist blödsinn. Gerade wo in dem Zusammenhang die XBOX erwähnt wurde. Auf dem PC siehts für XNA/C# (im Vergleich zu C++) schon viel besser aus als auf der XBOX. Was auch genau verkehrt herum impliziert wurde.
BTW: das Problem wenn man an das XBOX Developer Kit kommen will ist nicht nur das Geld, sondern auch, dass man als kleiner Privater garkeine Lizenz bekommt. Nichtmal als kleine Firma die das Geld hätte, aber noch nix vorzuweisen hat. Ich weiss nicht ob MS das SDK rausrückt, und man das Spiel quasi machen, aber dann nicht vertreibe darf, oder ob sie gleich das SDK nicht rausrücken (vermute eher das Zweite) - ist aber im Endeffekt auch egal.
c ist eben c auch wenn es c# ist.
In einem Dokument macht das # ja nichts.
Ist aber ein Unterschied ob man
#include <time.h>
oder
include <time.h>
schreibt.
@stotty:
Frage bitte nächstes mal in ANSI-C.
Strings als Datentyp enthalten nur die darzustellenden Zeichen, keinerlei Informationen wie die Zeichen irgendwo dargestellt werden sollen, deshalb kann man Strings an sich nicht formatieren.
HTML wäre sicherlich ne Möglichkeit, aber wenns was textboxartiges sein soll ist die RichTextBox wohl am geeignetesten.