Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Portal
  • |
  • Mitglieder
Beiträge von chilic
Thema: Dictionary erstellen - Code optimieren ?
Am im Forum: Code-Reviews

Etwas OT ... aber erwähnenswert.

Zitat
Käse hier var zu verwenden
var verwenden ist in vielen Fällen entweder Faulheit oder der Irrglaube man würde damit etwas besser machen, obwohl es nicht der Fall ist ;-)
Lesbarer wirds meist nicht.

Thema: Listen für Suchen optimieren
Am im Forum: Grundlagen von C#

Zitat
Sollte das Frust abbauen, oder welchen Sinn hat das? Denn Nutzen, den Du selbst ansprichst, hat das keinen - für niemanden.
Dass ich das anspreche hat noch keinen Nutzen. Aber vielleicht zeigt sich der Nutzen, wenn zukünftig jemand der mit dem Prinzip und Grundverständnis von Arrays und Listen und deren Handling schon überfordert ist, einen Hinweis bekommt was er falsch macht oder wo er etwas übersieht, statt einfach auf Linq verwiesen zu werden.
Was soll denn jemand mit Linq wenn die Grundlagen noch fehlen?

Wenn sich jemand verläuft und mich um Rat fragt dann erkläre ich ihm wo er sich gerade befindet, wo er falsch abgebogen ist und wie er richtig läuft. Sollte ich sagen "kannst auch mit Auto, Bus oder U-Bahn hinfahren - falls du selbst rausfindest wo du bist und wo du hin musst"?
Zitat
Statt ein Quiz daraus zu machen, kann man ja einfach produktiv antworten, oder?
Mit meiner Frage wollte ich ausdrücken dass ich nicht weiß was eine Und Verknüpfung hier bringen sollte.

Frust direkt ist es nicht, aber schade finde ich sowas. Ich bilde mir ein in der Zeit als ich von hier sehr wertvolle Antworten für mein C# Wissen mitgenommen habe waren die Antworten anders.

Thema: Listen für Suchen optimieren
Am im Forum: Grundlagen von C#

Es gibt die Methode BinarySearch für Listen und Arrays, hab ich soeben gefunden. Vielleicht hilft dir das ja.
Die erfordert aber dass die Liste sortiert ist. Sonst kann die Suche nicht wissen welche Listenelemente sie nicht überprüfen muss.
Denn wenn der Treffer überall stehen kann, muss alles durchsucht werden.

Zitat
Dictionary lässt sich ja optimiert nach Keys durchsuchen.
Nicht ganz. Ein Dictionary merkt sich mittels Hashwerten wo ein Objekt liegt. Damit muss im Idealfall kaum gesucht werden, sondern es kann sich direkt ausrechnen wo das Objekt liegen müsste. In der Praxis liegen an dieser Stelle vielleicht auch mehrere Objetke, aber eben nicht alle sondern nur ein paar.

Wie sehr sich Optimierung lohnt hängt stark von deinem Anwendungsfall ab. Wenn ein Einzelplatzrechner der kaum was tut pro Tag 100 x 1 ms länger braucht wäre mir das egal. Wenn ein Server alle 10 Sekunden sehr viele Elemente durchsucht und dabei jeweils 0,5 Sekunden länger braucht ist es schlecht.

Dass reflexartig Linq erwähnt wird ohne der Frage viel zu nutzen ist man in diesem Forum gewohnt. Neu wäre der Hinweis auf UND Verknüpfungen - was könnte DNS46 damit anfangen?

Thema: CSV bearbeiten
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Zitat
Mit den if Abfragen mit dem break der inneren Schleife hast du auch einie magic numbers.
Noch schlimmer. Wenn man die for Schleife bis y2 ≤ 43 laufen lässt, muss man nicht mehr aus ihr herausspringen wenn y2 ≥ 44 ist :-)

Thema: Sequentielles ausführen von Funktionen. Gibt es da ein Pattern?
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Die verschachtelten if kannst du doch auch ersetzen durch

if Fehler bei Schritt 1 then return
if Fehler bei Schritt 2 then return
if Fehler bei Schritt 3 then return

Thema: Was macht Strg+C genau?
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Meines Wissens kann die Zwischenablage Daten in mehrerem Variationen speichern. Vielleicht setzt du die falsche?
Guck dir doch den funktionierenden Inhalt mit GetData an, dann siehst du möglicherweise den entscheidenden Unterschied zu dem was du setzt.

Thema: Warenkorb Produktecounter
Am im Forum: Grundlagen von C#

Was mir noch auffällt und dir sicherlich hilft.

Nenne den Zähler nicht C, sondern so dass du weißt was er tut. Dann brauchst du hinter die Verwendung der Variable nicht schreiben was sie ist.
Ja, ich weiß man denkt sich gerne mal "das weiß ich dann später schon noch", wenn man als Anfänger sein erstes Programm macht. Ist aber garantiert nicht so :-)

item.SubItems.Add(sqlReader.GetValue(1).ToString()); //Artikel
Das funktioniert solange der Wert 1 auch tatsächlich der Artikel ist.
Wenn du in die Tabelle einen Wert einfügst und sich die Spalten verschieben, ist dein komplettes Programm im Eimer und du suchst und fluchst.
Greife per Spaltenname auf den Wert zu. Dann kannst du auch hier wieder auf den Kommentar verzichten.
(Mit dem SqlReader bin ich spontan nicht so fit dass ich Methodennamen kenne. Ich weiß dass es mit einer Table und den einzelnen Rows funktioniert.)
float num2 = float.Parse(string.Format("{0:0.00}", sqlReader.GetValue(5).ToString()));
Allgemein wäre ich mit ToString bei solchen Dingen vorsichtig. Es verleitet einen das oft zu verwenden weil es einem aus allem schnell einen String macht. Nutze lieber den Datentyp der tatsächlich drin steckt. In deinem Fall steht hoffentlich ein float in der Datenbank? Warum also den in einen String wandeln und den String dann wieder zurück in float parsen? Lies den Wert doch gleich als float aus.
Dass string.Format einen String als 0.00 float formatiert kann ich mir übrigens nicht vorstellen. Funktioniert das bisher tatsächlich?
Zitat
Das Ganze funktioniert aber nur mit einem Produkt und will nicht mehr, wenn mehrere Produkte gescannt werden.
Könnte das daran liegen dass du nur dann etwas zu listWarenkorbMain hinzufügst wenn C == 1 ist?

Thema: Grundsätzliche Machbarkeit: "Mehrere Fenster" und Blazor/Razor?
Am im Forum: Web-Technologien

Dass der Entwickler da produktiver ist mag sein. Aber wie sieht es für den Anwender aus?

Thema: Grundsätzliche Machbarkeit: "Mehrere Fenster" und Blazor/Razor?
Am im Forum: Web-Technologien

Ja, einige Punkte sind eine Frage der Implementierung. Aber die erlebe ich eben hier und da ziemlich mager.
Das Argument "jetzt alles als Webanwendung" alleine ist noch nicht genug. Man muss es dann schon auch gescheit machen - wenn das nicht passiert, ist kein Wunder dass so ein Eindruck entsteht.
Selbes mit "wir haben eine Umgebung in der man tolle Dinge anstellen *könnte*, aber das was letztendlich passiert ist ein Rückschritt" ;-)

Thema: Grundsätzliche Machbarkeit: "Mehrere Fenster" und Blazor/Razor?
Am im Forum: Web-Technologien

Nur weil es Webanwendungen gibt und viele glauben sie müssten sie deswegen für alles einsetzen, ist das trotzdem noch nicht überall sinnvoll :-)

Man denke an Onlinebanking, wo man ein Problem kriegt wenn man aus Gewohnheit "zurück" klickt - und dann auf einer abgelaufenen Session steht und sich dann vielleicht direkt neu anmelden muss damit man weiter kommt. Lästig! Und undurchdacht!
Oder andere Anwendungen die es oft auch im professionellen Umfeld gibt, wo die ganzen Aspekte die hier angesprochen werden (mehrere Ansichten, verschiebbar und so) entweder einfach gar nicht existieren oder plump und nur unzureichend simuliert werden.

Ganz davon zu schweigen vom Aktualisierungskonzept einer Ansicht. Wenn ich zum umsortieren einer Liste einen Durchlauf "Anfrage an den Server - Antwort vom Server - Neuaufbau der kompletten Ansicht" abwarten muss, das kanns nicht sein.

Das Argument "läuft auf jeder Platform" mag stimmem. Nur was hilft es mir wenn etwas zwar auf jeder Platform läuft, ich das aber gerade im Firmenumfeld gar nicht brauche weil es dort nur Windows gibt? Für diese rein in der Theorie existierende Freiheit gebe ich die ganzen Vorteile einer richtigen Anwendung auf.
Wie viel Lob darf ich dafür erwarten?

Dazu kommt dass eine professionelle Anwendung für mich subjektiv gesehen einfach nichts in einem Browsertab zu suchen hat, neben dem sich Katzenvideos, Nachrichtenseiten, Facebook und ähnliches tummeln.

Zitat
am liebsten wäre meinen Chef eine Webanwendung
Da haben wir das Problem.
Warum wäre ihm das am liebsten? Ist er die Art Chef, der mit der Thematik nichts zu tun hat und der Begriff "Webanwendung" das einzige ist was ihm dazu zufällig irgendwo begegnet ist?
Informiere ihn dass man nach der Aufzählung der Vorteile nicht zu lesen aufhören darf, da kommen meistens noch die Nachteile ;-)

Thema: Statistik in Konsole ausgeben
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Den running Gag, dass man jemandem der noch so gut wie nichts kann mit LINQ kommt, haben wir jetzt ja auch mal wieder hinter uns. Jetzt etwas tatsächliche Hilfe.

Tip mit der Klasse ist klasse :-) Setz das um, dann ist der Code gleich viel sprechender.

Dann mach dir eine for-Schleife die über alle Umsätze läuft und sich den höchsten davon merkt. Der hat die halbe Bildschirmbreite.
Für die anderen Umsätze kannst du dann mit dem Dreisatz ausrechnen wie breit die jeweils sein sollen.

Thema: Best Practice Sortierung
Am im Forum: Rund um die Programmierung

Wenn nur verschoben und nicht eingefügt/gelöscht wird, musst du beim Verschieben nur die Sortierungen vom Einfügepunkt bis zum Endpunkt anpassen.
for i von Min(Anfangsposition, Endposition) bis Max(Anfangsposition, Endposition) setze Sortierwert = i

Thema: Wert aus Bedingung außerhalb verfügbar
Am im Forum: Grundlagen von C#

Die Variablen müssen in diesem Fall eben global gemacht werden. Oder es wird eine Methode für das SQL erstellt, in die man die Variablen als Parameter übergibt.
Wie das SQL ausgeführt wird ist für die eigentliche Frage nicht entscheidend. Wohl aber für den nächsten Schritt, nämlich dass man eine saubere Abfrage bekommt.

Thema: C# Nachhilfelehrer gesucht
Am im Forum: Smalltalk

Es ist ein Unterschied zwischen
* Ich soll dies und das machen, Code bitte.
* Ich soll dies und das machen und hänge an einem bestimmten Punkt.

Thema: Threadsicherheit in Get und Set bei statischen Eigenschaften
Am im Forum: Grundlagen von C#

Was ich interessant finde, dass einige Antworten eingehen obwohl bis zur Erklärung nun wirklich niemand wissen konnte was da "nicht funktioniert" ;-)

Thema: Zeilen in eine Liste einlesen bis Zeichen XYZ
Am im Forum: Grundlagen von C#

C# bietet vieles was man grundsätzlich mit Strings machen wollen könnte. Diese Aufgabe ist allerdings "zu speziell" als dass C# dazu eine eingebaute Methode hätte. Aber wie du ja siehst, ist das schnell selbst programmiert.
(Ich hoffe das beantwortet deine Frage - falls nicht, bitte genauer erklären was du wissen möchtest)

Thema: Rest der Zeile entfernen ab Zeichen
Am im Forum: Grundlagen von C#

Die Stelle eines Zeichens bekommst du mit IndexOf.

Deine Beschreibung verstehe ich nicht. Ab dem X willst du den Rest der Zeile inklusive dem N löschen. Später willst du aber ab dem N löschen?

Thema: CheckBox - Textumbruch beim AutoSize = 'False'
Am im Forum: GUI: Windows-Forms

Ich glaube da ist ein Bild hilfreich. Ich wüsste nämlich gerade nicht wo links Platz entsteht wenn Text umbricht.

Thema: Alle möglichen IP Adressen anhand eines Netzwerks rausfinden
Am im Forum: Netzwerktechnologien

Dein Problem ist die Herangehensweise -> "ich bin auf der Suche nach einer Library".
Als erstes sollte man bei solch kleinen Dingen danach suchen wie Netzwerkadressen gebildet werden und sich überlegen ob man sich ein Snippet dazu sucht das man in den Code einbaut, statt eine Library dafür einzubinden ;-)

Thema: Freistellen eines Bitmap klappt bei einigen Bildern nicht
Am im Forum: Grafik und Sound

Sind die Werte für die neue Bildgröße schlüssig? Vergleiche sie mit dem Bild was als Resultat herauskommt. Dann siehst du ob deine Crop Routine nicht passt, oder ob die neue Bildgröße schon nicht stimmt.
Wenn die Methoden zur Gesichtserkennung schon unsinnige Werte zurückgeben, kann natürlich kein sinniges Bild mehr herauskommen.

Und wie gesagt, dass das immer nur bei der Auflösung von 96 funktioniert ist wirklich komisch. Die Auflösung hat meiner Meinung hier überhaupt nichts zu suchen.

Thema: Freistellen eines Bitmap klappt bei einigen Bildern nicht
Am im Forum: Grafik und Sound

Vorweg ich hab zu Gesichtserkennung überhaupt keinen Einblick.

Mich wundert dass hier die Auflösung des Bilds eine Rolle spielen soll. Sollten das nicht alles absolute Pixelangaben sein? Da sollte es völlig irrelevant sein welche Auflösung man dem Bild andichtet, die es später vielleicht beim Ausdruck oder sonstiger Darstellung haben soll.

Thema: Berechnung von Primzahlen mit dem Sieb des Eratosthenes - Performancesteigerung möglich?
Am im Forum: Rund um die Programmierung

Du beginnst mit zahl bei 0, wirst aber nur aktiv wenn zahl ≥ 1 :-)
Sofern das nicht sowieso raus optimiert wird, sparst du dir schon mal einen Vergleich pro Durchlauf, wenn du direkt bei 1 beginnst. Und du sparst dir optisch eine Einrückungsebene.

ConvertToInt64 brauchst du auch nicht, liest sich nur schwer aber der Compiler wandelt dir das automatisch um.

Was ich mir jetzt alles überlege, bitte selber noch nachprüfen.

Was genau soll in primzahl stehen? So wie ich das Sieb verstehe, markiert es Zahlen. Wäre also ein Array von bool Werten statt Zahlen?
Ich würde primzahl[ i ] nicht mit i+1 füllen, sondern mit i. Sonst kennt sich keiner mehr aus.
Das führt dann dazu dass du nicht mehr primzahl[zahl] auslesen musst was einen Zugriff auf das Array bedeutet, sondern du bei der Prüfung auf != u und der Rechnung mit % direkt zahl verwenden kannst.
Nur für primzahl [zahl] != 0 brauchst du noch das Array, denn das prüft die Markierung der Zahl, statt den Wert selbst.

Zu if (primzahl[zahl] % u == 0) was mit sinnvolleren Zuweisungen das selbe ist wie if (zahl % u == 0).
Die % Rechnung wird nicht Null, wenn zahl < u. Du kannst also die innere Schleife bei u beginnen, statt bei 0. Das spart einiges an Durchläufen.
Wenn du die Schleife erst bei u+1 beginnst und den Fall zahl == u separat in der äußeren Schleife behandelst, kannst du den Test primzahl[zahl] != u auch weglassen.0

Ein weiterer Ansatz: Das Sieb markiert Vielfache einer Zahl.
Du durchläufst JEDE Zahl und prüfst mit % ob sie ein Vielfaches von u ist. Das funktioniert zwar, ist aber sehr viel Aufwand. Für u = 1000 findest du ein Vielfaches und prüfst dann die nächsten 999 Zahlen ebenfalls, obwohl die kein Vielfaches sein können. Für u = 10000 prüfst du 9999 andere Zahlen ohne Ergebnis.
Also beginne die innere Schleife bei zahl = u und dann nicht mehr zahl++ sondern zahl += u. Dann brauchst du die % Operation nicht mehr und kannst ohne weitere Prüfung primzahl[zahl] = 0 setzen.

Thema: c# Datum umwandeln?
Am im Forum: Grundlagen von C#

Als welcher Datentyp ist denn das Datum in Win32_OperatingSystem gespeichert?
Dieses ToString überall finde ich eine Katastrophe, machen anfangs alle. Alles was man hat wird in einen String gewandelt und dann wieder mühsam zurück.
Wenn die Tabelle Win32_OperatingSystem sauber angelegt ist, ist das Datumsfeld bereits ein Datum und muss nur noch passend gecasted werden.

Thema: Mehrere Bildschirme ermitteln und getrennt! anzeigen und die echte Auflösung ermitteln
Am im Forum: Rund um die Programmierung

Zitat
Das mit dem "screen.Bounds" ist echt gemein. Mit großen "Screen" wird das nämlich nicht angeboten.
Was ist gemein und was wird nicht angeboten?

Thema: Mehrere Bildschirme ermitteln und getrennt! anzeigen und die echte Auflösung ermitteln
Am im Forum: Rund um die Programmierung

Zitat
Ich denke das liegt am "Screen.PrimaryScreen.Bounds.[...]"

Wenn du nur nach dem ersten Bildschirm fragst, bekommst du in der Tat auch nur den ersten zu sehen.
Zitat
screen.Bounds.ToString());" zeigt es richtig an, aber in einer Art und Weise, wie mir das nicht gefällt (Siehe Anhang)

Mal ne irrwitzige Idee, was wenn du die Ausgabe in der Form die du haben willst ganz einfach nicht immer nur mit dem selben Screen.PrimaryScreen.Bounds.Width machst, sondern mit dem aktuellen screen.Bounds.Width?

Thema: Programm soll nichts tun, bis Rechner online ist
Am im Forum: Code-Reviews

Was macht der Ping wenn er keine Antwort kriegt, fällt der dann wirklich in eine Exception oder gibt das einen Status zurück?
Dann wäre dein Programm nämlich weit davon entfernt "nichts zu tun", weil es dann permanent ständig pingen würde :-)

Thema: TextBox - fehlendes erstes Zeichen
Am im Forum: GUI: WPF und XAML

Zitat
laut Einzelkschritt wird die "1" aber in "Wert" geschrieben...
Und was passiert wenn du weiter tippst mit dem Wert?

Den Ausdruck "if ((value % 1) > 0)" finde ich interessant. Da sollte ein Kommentar ran, der aussagt was das soll.

Length == 3 wird nur aktiv wenn genau drei Nachkommastellen eingegeben werden. Was wenn jemand eine Zahl mit 5 Nachkommastellen hineinkopiert?
Machs lieber etwas überschaubarer, zum Beispiel teste ob 100 * value noch Nachkommastellen hat.

Thema: Pre-, Post- und inorder Traveriserung von Graphen
Am im Forum: Rund um die Programmierung

Zitat
Und wieso werden die drei Algorithmen (sind ja alles eine Form der Tiefensuche) haupsächlich für Bäume erklärt?
Ein Baum ist ein Graph mit vielen Einschränkungen. Es gibt nur genau einen Einstiegspunkt, eine definierte Richtung (Pfeil bei der Verbindung) und keine Zyklen. Beim Binärbaum hat ein Knoten maximal zwei Nachfolger, so dass man von links und rechts sprechen kann und die Nachfolger somit auch geordnet sind (z.B. links ist immer kleiner als rechts).
Ein allgemeiner Graph kann bidirektionale Verbindungen und Zyklen haben und seine Nachfolger haben auch nicht unbedingt eine Sortierung.

Preorder und Postorder besuchen die Nachfolger beim Binärbaum entweder alle vor dem Knoten oder alle nach dem Knoten. Das lässt sich von den zwei Nachfolgern beim Binärbaum leicht auf sonstige Anzahlen an Nachfolgern erweitern. Dann sind es eben nicht zwei Teile die man alle vor/nach dem Knoten besucht, sondern mehr.

Inorder besucht den Knoten genau zwischen dem linken und dem rechten Nachfolgerknoten. Das "zwischen" wird beim beliebigen Graphen schwer, denn der hat nicht nur (maximal) zwei Nachfolger.
Natürlich kannst du dir eine Strategie überlegen die "inorder" funktioniert. Zum Beispiel indem du den Knoten selbst immer nach dem ersten Nachfolgebaum untersuchst (egal wie viele noch kommen), oder immer vor dem vorletzten, oder immer nach der Hälfte oder was dir eben einfällt.

Thema: Anzahl Checkbox checked als Wert für for Schleife
Am im Forum: Grundlagen von C#

Zitat
Hiermit bekomme ich den Wert weiß aber nicht wie ich das der Schleife übergeben kann, weil ich daraus nicht Length entnehmen kann.
Ist nicht das i das du hier erhältst schon genau diese Anzahl?

Nächster Punkt. Dein Code sieht für mich aus als bräuchtest du nicht nur die Zahl der angehakten Checkboxen, sondern solltest auch wissen welche das sind.
Also solltest du trotzdem alle durchlaufen und in der Schleife aber nur diejenigen berücksichtigen die Checked sind.
Sonst würdest du bei einer angehakten Checkbox mit dem Zähler 1 in deine Schleife gehen und *immer* nur Textbox 0 ansprechen, *egal welche Checkbox* angehakt ist.

Statt dem Gebastel mit den Namen könntest du alle Checkboxen und Textboxen jeweils in ein Array oder eine Liste packen. Dann kannst du mit Index auf diese Elemente zugreifen und brauchst nicht ständig mit Controls.Find hantieren.

Dann *irgendwann später* wenn du verstanden hast was du da tust und wie man Listen, Array etc. benutzt, kannst du dir ansehen was Databinding und Linq ist.
Aber bitte alles der Reihe nach verstehen. Kein Arbeitgeber will von dir hören dass du weißt wie man Linq schreibt und deshalb nicht mehr wissen musst was ein Array ist.

Thema: Warum kann ich Enum kein Int zuweisen?
Am im Forum: Grundlagen von C#

Da du die Variablen nicht als Zahl deklariert hast sondern als Weekday, will der Compiler dafür auch ein Element der Aufzählung haben.
Du könntest das casten als (Weekday)1, dann geht das. Aber dann nimmst du dir den Vorteil, sofort sehen zu können welches Aufzählungselement das ist.
Soweit dazu warum die 1 nicht ohne ausdrücklichen Cast akzeptiert wird.

Warum die 0 dann doch funktioniert, könnte daran liegen dass eine solche Variable mit einer 0 vorbelegt wird wenn du nichts anderes angibst. Daher könnte es sein dass der Compiler erkennt, da passiert ja nichts was ohne diese Zeile nicht auch passieren würde, und er deswegen die Zuweisung hinnimmt.