Ja dann ist es gleich wie bei Java, dass nur Membervariablen automatisch initialisiert werden.
Es ist das hier. Dravere hatte es in einem anderen Thread erwähnt. Ich bin eigentlich sehr zufrieden mit dem Buch.
SortedList hat einen Kopierkonstruktor, wenn ich das richtig erkenne.
SortedList <string, myObject> list1, list2;
list1 = my_list_creator();
list2 = new SortedList<string, myObject>(list1);
Es wird immer alles mit Nullbytes vollgekleistert, das erledigt bereits der Allocator.
Wertetypen können gar keinen (userdefinierten) Default-Konstruktor haben.
Die offizielle Begründung von MS ist die, dass die Runtime bei Wertetypen nicht sicher stellen könnte, dass der ctor für Wertetypen auch wirklich in jeder Situation läuft. (Wobei ich nicht verstehe wieso das ein Problem sein sollte, aber naja, das ist die offizielle Begründung)
Mir hat der Wikipedia-Artikel geholfen. Vor allem die neuen Sprachfeatures die C# in einigen Dingen sehr elegant machen gefallen mir und sind dort zu sehen.
MfG SideWinder
LowLevelCopy schrieb:
Geht das vll. auch eleganter?
Vielleicht, aber ohne zusätzliche Informationen kann man dir schlecht helfen. Mir fehlen mindestens diese Informationen:
- Wie kommst du an den IntPtr?
- Wie sieht die Struktur aus?
- Was ist der Kontext? Wieso verwendest du Marshal?
Grüssli
Das steht doch auch im Text von deinem ersten Link:
_dgCars.AutoGenerateColumns = false;
DataGridViewTextBoxColumn makeColumn = new DataGridViewTextBoxColumn();
makeColumn.DataPropertyName = "Make";
makeColumn.HeaderText = "The Car's Make";
DataGridViewTextBoxColumn modelColumn = new DataGridViewTextBoxColumn();
modelColumn.DataPropertyName = "Model";
modelColumn.HeaderText = "The Car's Model";
DataGridViewTextBoxColumn yearColumn = new DataGridViewTextBoxColumn();
yearColumn.DataPropertyName = "Year";
yearColumn.HeaderText = "The Car's Year";
_dgCars.Columns.Add(makeColumn);
_dgCars.Columns.Add(modelColumn);
_dgCars.Columns.Add(yearColumn);
Alternativ mittels einer entsprechenden Schleife.
P.S
ginge das auch mit einer zur laufzeit unbekannten anzahl properties?
Das ergibt keinen Sinn, du meinst wohl eher "zur Laufzeit beliebigen Anzahl Properties" -)
ogrex13 schrieb:
http://gallery.techarena.in/data/504/medium/FIFA_MANAGER_09-2.jpeg
Liste von Objekten im Code, pro Objekt ein DataTemplate, die Buttons schalten das "CurrentItem" durch und ein ContentControl zeigt es an.
oder
Liste von Objekten im Code, ein Grid mit den Steuerelementen welche gegen die Objekt properties bindet, die Buttons schalten das "CurrentItem" durch, das DataContext des Grids bindet gegen das CurrentItem.
ogrex13 schrieb:
http://www.zath.co.uk/wp-content/uploads/2009/11/football-manager-2010-home-screenshot.jpg
TabControl.
Sag am besten genauer was du erreichen möchtest, es gibt immer verschiedene Wege zur Lösung eines Problems.
while(run)
{
var impl = ImplFactory.Create(irgendwas);
impl.methode();
}
Man kann nicht sagen was in deinem Fall besser ist, ein Delegate wird da auch nicht viel kosten, die Frage ist einfach => Was hast du vor? Es gibt immer verschiedene Wege zum Ziel.
Wenn du dir Sorgen um die Performance machst, Miss es, einmal ein direkter Aufruf und einmal den degelagen, und sobald du das hast, schmeiß die Ergebnisse weg, such dir eine Ordendliche Implementierung und fertig.
-> http://www.clean-code-developer.de/wiki/CcdRoterGrad#KeepitsimplestupidKISS
-> http://www.clean-code-developer.de/wiki/CcdRoterGrad#VorsichtvorOptimierungen
evtl- auch -> http://www.clean-code-developer.de/wiki/CcdOrangerGrad#SeparationofConcerns (kennen deine Methoden ja nicht)
habs jetzt so gemacht
http://www.eggheadcafe.com/software/aspnet/32501581/datatable-spaltentyp-wechseln.aspx
aber bei leeren feldern gehts nicht, dann ist es dbnull.
Könnte es sein dass dein Web-Service die Verbindung offen lässt, und du vergessen hast irgendwas zu disposen? Dann hast du irgendwann so viele Verbindungen dass WCF verweigert (throtteling).
Bzw. irgendwann ist auch die Grenze erreicht wo Windows einfach keine ephemeral Ports mehr hat.
Na du musst schon überprüfen ob die Form noch steht oder nicht - bedenke das der GC erst korrekt aufräumen kann wenn keine verweise mehr existieren.
Aber wie gesagt, bevor du blank die TextBox ansprichst und dort text rein packst, überprüfe es vorher.