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

  • »
  • Community
  • |
  • Diskussionsforum
Was wünscht ihr euch für C# 5?
pdelvo
myCSharp.de - Member

Avatar #avatar-3354.png


Dabei seit:
Beiträge: 1.346

Themenstarter:

Was wünscht ihr euch für C# 5?

beantworten | zitieren | melden

C#4 steht vor der Tür, nun wollte ich mal in die Zukunft guken und mal fragen, was ihr euch für C# 5 wünschen würdet?

Ich fange mal in. Inline ILASM. Das wäre echt eine erleichterung. Bei manchen sachen muss man echt einen umweg machen(zB viele variablen erzeugen, etc). Das kann man an manchen Stellen echt verkürzen, wenn man es selber macht.

Mal ein konkretes Beispiel:


//'Altes' C#
int i = 6;
int j = 3;
int z = i;
i = j;
j = z

//'Neuses' C#
int i = 6;
int j = 5;
IL
{
push i
push j
pop i
pop j
}

Was fällt euch so ein?

Gruß pdelvo
private Nachricht | Beiträge des Benutzers
userid12529
myCSharp.de - Member



Dabei seit:
Beiträge: 208

beantworten | zitieren | melden

Hallo pdelvo,

ich fänd's sehr cool, wenn die Möglichkeiten von Spec# in C# übergehen würden. :)

Grüße,

Isaac
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von userid12529 am .
private Nachricht | Beiträge des Benutzers
gfoidl
myCSharp.de - Team

Avatar #avatar-2894.jpg


Dabei seit:
Beiträge: 6.841
Herkunft: Waidring

beantworten | zitieren | melden

Hallo,

die Frage überrascht mich ein wenig, aber was mir spontan einfällt:
  • Bei automatic Properties sollte es möglich sein Default-Werte zu setzen (zB via Attribute und der Compiler generiert den Code dazu)
  • Bei Verwendung von INotifyPropertyChanged sollte der Compiler den Namen (der als String übergeben werden muss) automatisch ableiten.
  • Generische Serialisation. Damit meine ich dass v.a. die Deserialize-Methode gleich den richtigen Typ zuückgibt ohne einen cast durchführen zu müssen.
  • Mehr Unterstützung für numerische Berechnungen (Array-Slicing, Matrix-Operationen, ...)
Mehr fällt mir sicher ein wenn ich mich mal ärgere warum es dies oder jenes nicht gibt.

Man kann sich für das alles zwar selbst Hilfsklassen/Methoden schreiben, aber wenn es von Haus aus dabei wäre könnte jeder in diesen Genuss kommen.

mfG Gü
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von gfoidl am .

Stellt fachliche Fragen bitte im Forum, damit von den Antworten alle profitieren. Daher beantworte ich solche Fragen nicht per PM.

"Alle sagten, das geht nicht! Dann kam einer, der wusste das nicht - und hat's gemacht!"
private Nachricht | Beiträge des Benutzers
michlG
myCSharp.de - Experte

Avatar #avatar-2909.png


Dabei seit:
Beiträge: 3.430
Herkunft: Naturns - Südtirol - Italien

beantworten | zitieren | melden

Hallo,

hm, also ich bin momentan ziemlich glücklich wie es ist.
Aber eine Funktion die mir zu den schon genannten noch als praktisch erscheint ist ein spezielles Property das schon von sich aus NotifyPropertyChanged aufruft.

So ist es momentan


private string _myProperty;

public string MyProperty
{
   get{ return _myProperty;}
   set
   {
      _myProperty=value;
      if(PropertyChanged!=null)
        PopertyChanged(this, new PropertyChangedEventArgs("MyProperty));
}

so wäre es ganz nett :)


public NotifyPropertyChanged string MyProperty{get;set;}
Über die Syntax kann man natürlich streiten aber so etwas wäre doch praktisch.
Denn oft muss man die Fields machen nur um das PropertyChanged auslösen zu können wenn der Wert geändert wird.
Und gerade wie schon gfoidl gesagt hat ist es dann noch das Problem mit dem Namen.
Da schleichen sich schnell mal Fehler ein und es ist viel (teils unnötige) Tipparbeit.

Gruss
Michael
private Nachricht | Beiträge des Benutzers
Chickenlord
myCSharp.de - Member



Dabei seit:
Beiträge: 114

beantworten | zitieren | melden

Hi,

Ich bin ansich auch ziemlich zufrieden mit C#. Was mich persönlich stört, ist die Geschwindigkeit. Es gibt einfach Dinge, die man in C# nicht anzufangen braucht, weil es nie schnell genug sein wird. Da wäre im Endeffekt warscheinlich nur ein AOT Native Compiler die richtige Lösung. Aber ich greife so unglaublich ungerne zu C++, weil C# einfach viel schöner ist. Naja, evtl. ist es da tatsächlich eine Möglichkeit direkt in ILASM schreiben zu können. Unter Linux geht das übrigens schon, zumindest habe ich das in MonoDevelop oder Anjuta (weiß grade nichmehr welches es war) gesehn.

Greetz, der Hühneradel
„Heute back ich, morgen brau ich,
übermorgen cast ich die Königin nach int;
ach, wie gut dass niemand weiß,
dass ich Rumpelstilzchen heiß!“
Zitat
"Bei Stylefragen sollteste nen Mac-User oder ne Frau fragen."
private Nachricht | Beiträge des Benutzers
edsplash
myCSharp.de - Member

Avatar #avatar-3111.jpg


Dabei seit:
Beiträge: 390

beantworten | zitieren | melden

Properties/Member als Referenzen übergeben!


class Program 
  {
    static void Main(string[] args) 
    {
      MyClass foo = new MyClass();

      MyFunc(ref foo.Bar);

      Console.WriteLine(foo.Bar); //23
    }

    static void MyFunc(ref int val) 
    {
      //...
      val = 23;
    }
  }


  class MyClass 
  {
    private int bar;

    public int Bar 
    {
      get { return bar; }
      set { bar = value; }
    }
  }
using Skill
private Nachricht | Beiträge des Benutzers
m0rius
myCSharp.de - Member

Avatar #avatar-3125.png


Dabei seit:
Beiträge: 1.002

beantworten | zitieren | melden

Hallo,

folgendes Compilerfeature für foreach-Schleifen wäre sehr nützlich:

foreach (var item in collection)
{
    first
    {
        // Nur ausführen, wenn erstes Element
    }
    
    medial
    {
        // Nur ausführen, wenn weder erstes noch letztes Element
    }

    last
    {
        // Nur ausführen, wenn letztes Element
    }
}

m0rius
Mein Blog: blog.mariusschulz.com
Hochwertige Malerarbeiten in Magdeburg und Umgebung: M'Decor, Ihr Maler für Magdeburg
private Nachricht | Beiträge des Benutzers
Corpsegrinder
myCSharp.de - Member



Dabei seit:
Beiträge: 401

beantworten | zitieren | melden

Ich würde gerne ein Konstrukt aus D sehen und zwar die Pre- und Post-Contracts. Das sieht folgendermaßen aus:


int MyMethod(int a, int b)
{
  in
  {
    // check input values
  }
  out(result)
  {
    // check return value
  }
  body
  {
    // do sth
  }
}
private Nachricht | Beiträge des Benutzers
dN!3L
myCSharp.de - Experte

Avatar #avatar-2985.png


Dabei seit:
Beiträge: 2.891

beantworten | zitieren | melden

Hallo zusammen,

ich würde ja - als Gegensatz zu Werttypen, die auch null sein können (Nullables) - Referenztypen, die nicht null sein dürfen, schön finden (wie z.B. in Spec#).


void Main(int? nullableInt, Uri! nonNullableUri)
{ }

Gruß,
dN!3L
private Nachricht | Beiträge des Benutzers
m0rius
myCSharp.de - Member

Avatar #avatar-3125.png


Dabei seit:
Beiträge: 1.002

beantworten | zitieren | melden

Hallo dN13L,

oh ja, dieses Feature wäre wirklich super.

m0rius
Mein Blog: blog.mariusschulz.com
Hochwertige Malerarbeiten in Magdeburg und Umgebung: M'Decor, Ihr Maler für Magdeburg
private Nachricht | Beiträge des Benutzers
Peter Bucher
myCSharp.de - Experte

Avatar #jVxXe7MDBPAimxdX3em3.jpg


Dabei seit:
Beiträge: 5.940
Herkunft: Zentralschweiz

beantworten | zitieren | melden

Hallo dN!3L

Ich wüsste nicht wozu das nützlich sein könnte.
Oder verstehe ich das falsch und wäre das eine Condition für den Methodenaufrufer?

Ansonsten würde mich der Nutzen interessieren?


Gruss Peter
--
Microsoft MVP - Visual Developer ASP / ASP.NET, Switzerland 2007 - 2011

- https://peterbucher.ch/ - Meine persönliche Seite
- https://fpvspots.net/ - Spots für FPV Dronenflüge
private Nachricht | Beiträge des Benutzers
userid12529
myCSharp.de - Member



Dabei seit:
Beiträge: 208

beantworten | zitieren | melden

Hallo Peter Bucher,

interessant in dem Zusammenhang ist vor allem das Konzept Design by contract (Deutsch) / Design by contract (Englisch).

Grüße,

Isaac
private Nachricht | Beiträge des Benutzers
zero_x
myCSharp.de - Member

Avatar #avatar-2567.gif


Dabei seit:
Beiträge: 1.044
Herkunft: Koblenz

beantworten | zitieren | melden

Hallo zusammen,

was ich mir wünsche, wäre einerseits ein bessere Unterschützung in Visual Studio für LINQ to XML und das es inline-Assembler in C# gibt. In Visual Basic lässt sich z.B. folgendes machen:
Dim xml = <root>
                <child>myCSharp!</child>
          </root>
zero_x
zero_x | myCSharp.de - gemeinsam mehr erreichen

Für längere Zeit inaktiv.
private Nachricht | Beiträge des Benutzers
gfoidl
myCSharp.de - Team

Avatar #avatar-2894.jpg


Dabei seit:
Beiträge: 6.841
Herkunft: Waidring

beantworten | zitieren | melden

Zitat
inline-Assembler in C#
Ich weiß ehrlich gesagt nicht für was das gut sein sollte. Sämtliche "Optimierungen" die damit möglich sein sollten sind nicht vergleichbar mit zB Inline-Asm in C++. Der IL-Code muss ja sowieso geJITet werden und dort werden wenn es die Heuristik des JITer zulässt optimiert. Ein möglicher Ansatzpunkt wären einige Direktiven um den JITer bei den Optimierungen zu untersützen (die zB das Inlinen erlauben). AFAIK wurde das aber von MS schon mehrmals diskutiert und sie fanden bisher immer Gründe warum das verworfen wurde.

Wo wäre der Vorteil von Inline-IL in C#?


mfG Gü

Stellt fachliche Fragen bitte im Forum, damit von den Antworten alle profitieren. Daher beantworte ich solche Fragen nicht per PM.

"Alle sagten, das geht nicht! Dann kam einer, der wusste das nicht - und hat's gemacht!"
private Nachricht | Beiträge des Benutzers
zero_x
myCSharp.de - Member

Avatar #avatar-2567.gif


Dabei seit:
Beiträge: 1.044
Herkunft: Koblenz

beantworten | zitieren | melden

Hallo gfoidl,
Zitat von "gfoidl"
Wo wäre der Vorteil von Inline-IL in C#?
Damit meine ich richtigen Assembler-Code. Das hätte z.B. den Vorteil, dass man in C# einen API-Hook programmieren könnte. Möchte man in C# einen API-Hook verwenden, kann man das leider nur mit separten nicht-.NET DLLs umsetzen.

zero_x
zero_x | myCSharp.de - gemeinsam mehr erreichen

Für längere Zeit inaktiv.
private Nachricht | Beiträge des Benutzers
Floste
myCSharp.de - Member

Avatar #avatar-2376.jpg


Dabei seit:
Beiträge: 1.130
Herkunft: Norddeutschland

beantworten | zitieren | melden

m0rius Vorschlag hab ich asuch schon vermisst. Ansonsten Wäre es nett, wenn arrays sämtliche Stringoperationen mit delegatenparameter (anonyme methoden) unterstützen würden: split, IndexOf, LastIndexOf...

Inline-Assember wünsche ich mir auch.

Für Notify-Propertys würde ja auch eine automatische Codegenerierung im VS reichen.
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von Floste am .
Projekte:Jade, HttpSaver
Zum Rechtschreiben gibts doch schon die Politiker. Aber die bauen auch nur mist!
private Nachricht | Beiträge des Benutzers
Peter Bucher
myCSharp.de - Experte

Avatar #jVxXe7MDBPAimxdX3em3.jpg


Dabei seit:
Beiträge: 5.940
Herkunft: Zentralschweiz

beantworten | zitieren | melden

Hallo zusammen

@Isaac
Was meine Frage leider nicht beanwortet.

@zero_x
Das hat überhaupt nichts mit LINQ To Xml zu tun.
Ausserdem geht es doch mit C# relativ einfach, häufig und viel sollte sowas sowieso nicht eingesetzt werden.


Gruss Peter
--
Microsoft MVP - Visual Developer ASP / ASP.NET, Switzerland 2007 - 2011

- https://peterbucher.ch/ - Meine persönliche Seite
- https://fpvspots.net/ - Spots für FPV Dronenflüge
private Nachricht | Beiträge des Benutzers
dN!3L
myCSharp.de - Experte

Avatar #avatar-2985.png


Dabei seit:
Beiträge: 2.891

beantworten | zitieren | melden

Hallo Peter,
Zitat von Peter Bucher
Oder verstehe ich das falsch und wäre das eine Condition für den Methodenaufrufer?
Wie hast du es denn verstanden? ;)
Wie Issac (und du) schon schrieb, primärer Anwendungsfall wäre ein Kontract z.B. für eine Methode, dass ein Parameter nie null ist/sein darf. Ebenso anwendbar z.B. bei Properties oder Klasseninvarianten.
Im Prinzip wäre es eine Kurzschreibweise für eine bestimmte Art von Kontrakten.

Gruß,
dN!3L
private Nachricht | Beiträge des Benutzers
gfoidl
myCSharp.de - Team

Avatar #avatar-2894.jpg


Dabei seit:
Beiträge: 6.841
Herkunft: Waidring

beantworten | zitieren | melden

Zitat
Das hätte z.B. den Vorteil, dass man in C# einen API-Hook programmieren könnte.
Das ist aber voll gegen den Sinn von .net.
Zitat
Für Notify-Propertys würde ja auch eine automatische Codegenerierung im VS reichen.
Besser wäre es wenn der Compiler den Code generiert.


mfG Gü

Stellt fachliche Fragen bitte im Forum, damit von den Antworten alle profitieren. Daher beantworte ich solche Fragen nicht per PM.

"Alle sagten, das geht nicht! Dann kam einer, der wusste das nicht - und hat's gemacht!"
private Nachricht | Beiträge des Benutzers
Assri Komla
myCSharp.de - Member

Avatar #avatar-2855.gif


Dabei seit:
Beiträge: 57
Herkunft: Lomé (Togo), jetzt Rheinland

beantworten | zitieren | melden

Hallo gfoidl,

wie würdest Du folgendes Problem lösen: Der Kunde hat ein englisches XP, möchte aber eine deutsche UI-Culture. Und selbstverständlich soll dann auch die OS-MessageBox auf deutsch erscheinen.

Gruß
Assri Komla
private Nachricht | Beiträge des Benutzers
Peter Bucher
myCSharp.de - Experte

Avatar #jVxXe7MDBPAimxdX3em3.jpg


Dabei seit:
Beiträge: 5.940
Herkunft: Zentralschweiz

beantworten | zitieren | melden

Salute dN!3L
Zitat von dN!3L
Wie hast du es denn verstanden? ;)
Ich habe gedacht das ihr _nicht_ Nullable Referenztypen wollt, worin ich keinen Sinn sehe.

Aber als eine Schreibweise für Conditions ist natürlich was anderes :-).


Gruss Peter
--
Microsoft MVP - Visual Developer ASP / ASP.NET, Switzerland 2007 - 2011

- https://peterbucher.ch/ - Meine persönliche Seite
- https://fpvspots.net/ - Spots für FPV Dronenflüge
private Nachricht | Beiträge des Benutzers
gfoidl
myCSharp.de - Team

Avatar #avatar-2894.jpg


Dabei seit:
Beiträge: 6.841
Herkunft: Waidring

beantworten | zitieren | melden

Zitat
wie würdest Du folgendes Problem lösen
Gar nicht .
Wenn davon ausgegangen werden kann dass .net "plattformunabhängig" sein soll/te dann sind solche Lösungen sowieso nicht möglich.
Außerdem wird mit C++/CLI diese Möglichkeit angeboten. Für C# sehe ich darin keinen Sinn.


mfG Gü

Stellt fachliche Fragen bitte im Forum, damit von den Antworten alle profitieren. Daher beantworte ich solche Fragen nicht per PM.

"Alle sagten, das geht nicht! Dann kam einer, der wusste das nicht - und hat's gemacht!"
private Nachricht | Beiträge des Benutzers
Assri Komla
myCSharp.de - Member

Avatar #avatar-2855.gif


Dabei seit:
Beiträge: 57
Herkunft: Lomé (Togo), jetzt Rheinland

beantworten | zitieren | melden

Hallo gfoidl,

mit 'plattformunabhängig' meint MS nur die eigenen Betriebssysteme, von denen die betagteren bekanntermaßen auch nur eine Untermenge der .NET-Frameworks unterstützen. Nur das hat mit dem von mir formulierten Problem rein gar nichts zu tun. Da ist im Falle der MessageBox einzig und allein vom Win32API die Rede.

Ebenso wenig hat das etwas mit C# oder C++/CLI zu tun. Wir unterhalten uns hier über PInvoke und die von Dir so gescholtenen Hooks. Das war der Grund, weshalb ich Dir diese Frage gestellt habe.

Und: Ja, das Problem ist lösbar. Und zwar sehr elegant.

Gruß
Assri Komla
private Nachricht | Beiträge des Benutzers
gfoidl
myCSharp.de - Team

Avatar #avatar-2894.jpg


Dabei seit:
Beiträge: 6.841
Herkunft: Waidring

beantworten | zitieren | melden

Zitat
Ebenso wenig hat das etwas mit C# oder C++/CLI zu tun. Wir unterhalten uns hier über PInvoke
Ich unterhalte mich über C# 5.0 ;)


mfG Gü

Stellt fachliche Fragen bitte im Forum, damit von den Antworten alle profitieren. Daher beantworte ich solche Fragen nicht per PM.

"Alle sagten, das geht nicht! Dann kam einer, der wusste das nicht - und hat's gemacht!"
private Nachricht | Beiträge des Benutzers
Peter Bucher
myCSharp.de - Experte

Avatar #jVxXe7MDBPAimxdX3em3.jpg


Dabei seit:
Beiträge: 5.940
Herkunft: Zentralschweiz

beantworten | zitieren | melden

Hallo Assri Komla
Zitat von Assri Komla
Und: Ja, das Problem ist lösbar. Und zwar sehr elegant.
Und: Ja, du kannst es spannend machen. Und zwar sehr elegant.

;-)


Gruss Peter
--
Microsoft MVP - Visual Developer ASP / ASP.NET, Switzerland 2007 - 2011

- https://peterbucher.ch/ - Meine persönliche Seite
- https://fpvspots.net/ - Spots für FPV Dronenflüge
private Nachricht | Beiträge des Benutzers
svenson
myCSharp.de - Member



Dabei seit:
Beiträge: 8.746
Herkunft: Berlin

beantworten | zitieren | melden

Ich behaupte: 90% aller Entwickler machen im Prinzip nur C# 2.0. Deswegen ist es völlig Wurscht wie C# 5.0 aussieht: Es benutzt eh kaum jemand.

Manchmal ist weniger auch mehr...
private Nachricht | Beiträge des Benutzers
der-schlingel
myCSharp.de - Member

Avatar #avatar-3239.jpg


Dabei seit:
Beiträge: 799
Herkunft: Österreich/Wien

beantworten | zitieren | melden

Zitat
Ich behaupte: 90% aller Entwickler machen im Prinzip nur C# 2.0. Deswegen ist es völlig Wurscht wie C# 5.0 aussieht: Es benutzt eh kaum jemand.

Manchmal ist weniger auch mehr...

Full Ack
As a man thinketh in his heart, so he is.
- Jun Fan
Es gibt nichts Gutes, außer man tut es.
- Erich Kästner
Krawutzi-Kaputzi
- Kasperl
private Nachricht | Beiträge des Benutzers
pdelvo
myCSharp.de - Member

Avatar #avatar-3354.png


Dabei seit:
Beiträge: 1.346

Themenstarter:

beantworten | zitieren | melden

Ich finde nicht, dass man auf einer alten Version sitzen bleiben muss. Damit würde man den Fortschritt anhalten bzw. ausbremsen und C# würde im laufe der Zeit unaktraktiver werden.

Gruß pdelvo
private Nachricht | Beiträge des Benutzers
winSharp93
myCSharp.de - Experte

Avatar #avatar-2918.png


Dabei seit:
Beiträge: 5.742
Herkunft: Stuttgart

beantworten | zitieren | melden

Hallo zusammen,

Spec#-Konstrukte würde ich auch sehr gerne in C# sehen.

Außerdem wäre Unterstützung eines "Implies"-Operators (a -> b statt !a || b) interessant.

Auch read-only-Automatic Properties wären ganz nett.

Dann noch eine kleine Erweiterung des typeof Operators, sodass dieser direkt PropertyInfos etc. liefern kann und abschließend direkte Unterstützung von WeakEvents durch weak event und C# 5.0 ist für mich komplett.
private Nachricht | Beiträge des Benutzers
gfoidl
myCSharp.de - Team

Avatar #avatar-2894.jpg


Dabei seit:
Beiträge: 6.841
Herkunft: Waidring

beantworten | zitieren | melden

Hallo winSharp93,
Zitat
Auch read-only-Automatic Properties wären ganz nett.
falls ich das richtig verstanden habe ist das machbar.


public int Value{get; private set;}
Oder meinst du was anderes?

mfG Gü

Stellt fachliche Fragen bitte im Forum, damit von den Antworten alle profitieren. Daher beantworte ich solche Fragen nicht per PM.

"Alle sagten, das geht nicht! Dann kam einer, der wusste das nicht - und hat's gemacht!"
private Nachricht | Beiträge des Benutzers