Laden...

Profil von Jabe

myCSharp.de - Member Mitglied seit
J
Jabe
myCSharp.de - Member
2
Themen
57
Beiträge
Dabei seit
27.05.2008
Letzte Aktivität
vor 16 Jahren
Erstellt vor 17 Jahren

Folgendes Muster ist ausreichend, die Engine ist schlau genug um zu erkennen, dass die curly brackets nicht zu einem Quantifizierer gehören.
Der Stern ist ungenau, oder willst du auch "{}"? Beliebig viele Zahlen ist für mich 1 bis n, also das Plus.
\d ist natürlich das gleiche wie [0-9] aber IMHO klarer.

{\d+}
Erstellt vor 17 Jahren

Integer-Operationen sind ganze Zahlen. Du kannst nicht 1 lebende Kuh zwischen 3 Bauern aufteilen.

Klar kann man das, dann hat man eben keine (0) lebende Kuh.

PS: OK der Joke war so gedacht. ^^ brauch nochmal Wochenende

Erstellt vor 17 Jahren

Häufig ist es nicht sinnvoll eine generische Methode zu schreiben und diese dann per Reflection aufzurufen. Oft kann man das gleiche mit object erreichen, ohne viel ändern zu müssen.
Generics sind eine Hilfe für die Compile-Time, d.h. wenn man den Code eintippt. Steht der Typ zu dieser Zeit nicht fest, machen sie wenig Sinn.

PS:
Ausnahmen bestätigen hier natürlich die Regel. 😉

Erstellt vor 17 Jahren

Du kannst LINQ gegen alles benutzen, was IEnumerable implementiert und es ist unglaublich flexibel. Ich könnte mir sowas vorstellen:

var q = from trx in TransactionMonitoring.TransactionList.Values
        where trx.Ended.HasValue
        let duration = trx.Ended.Value - trx.Started
        group duration by trx.Caller;

foreach (var grouping in q)
{
    Console.WriteLine("{0}: {1}", grouping.Key, grouping.Average(x => x.Milliseconds));
}

Median gibt es direkt nicht, du kannst dir aber eine eigene Extension-Method schreiben. Ist nicht sehr schwer.

Erstellt vor 17 Jahren

Das ganze ist wohl hochgekeimt, weil das Entity Framework eben genau den gleichen weg wie diese Bohnen geht. Viele Entwickler würden lieber sehen, dass das EF auch POCOs persistieren kann, was -- AFAIK -- nicht möglich ist.

Erstellt vor 17 Jahren

resharper-standard einstellung.

Dito.

Eingerückt mit 4 Spaces. Früher habe ich immer Tabs genommen, aber mittlerweile bin ich überzeugt, dass Spaces wesentlich praktischer sind.

PS:
Für XML/XAML habe ich mich irgendwie in ein neuen Stiel verliebt, jede Eigenschaft in eine neue Zeile (kann man in VS auch einstellen). Ist allerdings eher exotisch, glaube ich. Das sieht dann so aus:

<Menu x:Name="mainMenu"
      DockPanel.Dock="Top">
    <MenuItem Header="Database">
        <MenuItem Header="Compress"
                  Command="local:Commands.CompressDatabase" />
    </MenuItem>
    <MenuItem Header="Help" />
</Menu>

Erstellt vor 17 Jahren

Hi,
InvokeRequired aus WinForms-Zeiten ist was anderes als der WPF-Dispatcher. Man muss also etwas umdenken. Der Dispatcher verwaltet mehrere Warteschlagen mit unterschiedlichen Prioritäten, und alle Aktionen in WPF werden über ihn abgewickelt. Insofern kann man ihn wunderbar benutzen um kleine Aktionen (oder kleine Häppchen einer großen) auf dem GUI-Thread durchzuführen.
Wenn man nun aus einem richtigen Thread auf die GUI zugreifen will, kann man das auch über den Dispatcher machen:
Man holt sich den Dispatcher der GUI (nicht des Workerthreads, sprich Dispatcher.Current im Worker wird nicht funktionieren) und kann dort seine Aktion per BeginInvoke (oder Invoke) ausführen.

Erstellt vor 17 Jahren

Hi,
es gibt zugar eine Code Metric, also eine Maßeinheit für die Qualität des Codes, die sich nach der Anzahl der gemeinsamen Felder richtet (Lack of Cohesion in Methods). Von daher sollten Methoden, die sich keine Felder der Klasse teilen, in andere Klassen überführt werden oder statisch gemacht werden (viele Hilfsfunktionen sind so). Wenn du nun die lokalen Variablen eine Methode als Felder deklarierst, machst du diese Metric kaputt. 🙂

Sollte eine Variable möglichst auch gleich instantiiert werden

Microsoft.CSharp.CSharpCodeProvider cSharp = new Microsoft.CSharp.CSharpCodeProvider();  

oder sollte die Deklaration und Instatiierung getrennt erfolgen, damit z.B. die Zeilen nicht zu lang werden?

Im Gegensatz zu früher sollte man Variablen erst dann deklarieren und initialisieren wenn man sie braucht. Eine getrennte Deklaration macht man nur dann Sinn, wenn man sie wirklich brauch (häufig sowas wie: int a; if(x) a = 5; else a = 42; a++).
Wenn dir diese Zeile zu lang ist:

using Microsoft.CSharp; // :)
using CSCP = Microsoft.CSharp.CSharpCodeProvider; // Alias für die Klasse
var cSharp = new Microsoft.CSharp.CSharpCodeProvider(); // Mit C# 3 Compiler
Erstellt vor 17 Jahren

und wenn ich richtig liege, dann werden BackgroundWorker in dem Standard ThreadPool gestartet und dieser ist auf 25 Threads "gleichzeitig" beschränkt.

Zur Vollständigkeit: Es sind 25 Threads pro CPU/Core. Ändern kann man das mit ThreadPool.SetMaxThreads().

Erstellt vor 17 Jahren

Jetzt wo du fragst ... Darüber hab ich noch garnicht nachgedacht.
Keine Ahnung, ob Generics bei Valuetypen Boxing auslöst oder nicht.
Da muss ich bei Gelegenheit mal nachforschen (jetzt hab ich leider keine Zeit).

Mir gings genauso. Musste auch erstmal schnell einen kleinen Test machen. 🙂
Wie schon von winSharp93 so halb gesagt:
Die Runtime erzeugt zur Lauftzeit den entsprechenden Code, wenn sie auf einen neuen, noch nicht generierten TType trifft, von daher passiert das auch mit Wertetypen.

10 von 57 Beiträgen