Diskussion:Sprachelemente von C-Sharp

message: Hmm, mal abgesehen von C#4-Features fehlt ja ziemlich viel:
* parametrische Polymorphie,
* anonyme Typen,
* lokale Typinferenz,
* Lambda-Ausdrücke sind als zu Ausdrucksbäumen konvertierbar, nicht nur zu Delegates,
* Operator-Überladung,
* implizite und explizite benutzerdefinierte Typumwandlungen.
Ist das Absicht? --Daniel5Ko 20:27, 5. Mai 2010 (CEST)
thread_title:  Der Rest von C#2 und C#3 ? 

message: Konstanten (Schlüsselwort const)
Einem mit const deklarierten Objekt kann nach der Deklaration und Initialisierung kein neuer Inhalt zugewiesen werden. Das Objekt wird dadurch zu einer Konstanten. 
Eine Konstante kann dabei sowohl ein Wertetyp sein (also ein einfacher Datentyp) als auch ein Referenztyp. Die Konstantheit stellt dabei nur sicher, dass die Referenz nicht veränderbar ist, schützt aber nicht vor Änderungen am referenzierten Objekt. So kann beispielsweise einer Konstanten die Referenz auf eine Liste zugewiesen werden, Änderungen an der Liste selbst sind weiterhin möglich (z.B. das Hinzufügen oder das Löschen von Listenelementen).
 using System;
 using System.Collections;
 
 public class ConstBeispiel
 {
   public static void Main()
   {
     // Neue Konstante erstellen
     const IList liste = new ArrayList();
 
     // Der Liste zwei Elemente hinzufügen
     liste.Add("Element 1: string");
     liste.Add("Element 2: string");
 
     // FEHLER: Versuch der Variablen liste
     // eine neue Referenz zuzuweisen
     liste = new ArrayList();
   }
 }
Konstanten gibt es auch in anderen Sprachen (z.B. C++, Java). In Java werden Konstanten durch das Schlüsselwort final gekennzeichnet, in Fortran durch PARAMETER.
Angeheftete quellcode läst sich entsprechend nicht Compelieren
ebenfalls nicht: 
const EventArgs e = EventArgs.Empty;
Grund: Referenctypen sind NICHT constant. bei const werden alle vorkommen durch die Variable durch den Compiler durch den wert der constanten Variablen ersetzt. Da der Compiler den Wert eines Referencetypes zur Compile zeit nicht kennt, kann er ihn auch nicht ersetzen (Er müsste die genaue Addresse im Speicher zur laufzeit kennen)
Werde mir eine veränderung überlegen, nach dem ich den ganzen Artikel gelesen habe.
So hab das mal abgändert, sowie noch weitere "Kleinigkeiten" erweitert. Mir fällt allerdings noch switch/case statement sowie Exceptionhandling. 
Vielleicht morgen, ich muss ins Bett ;) --Just-Ben 02:41, 17. Okt 2004 (CEST)
thread_title:  Folgende Behauptung ist falsch: 

message: System.Int32 ist KEINE Wrapperklasse für int, sondern int ist ein Alias für System.Int32.
"Man spricht dabei auch von einer Hüllenklasse (engl. wrapper class)." gelöscht. AUch in der MS-Dokumentation steht "aliases of predefined types in the System namespace". --AliM 11:52, 21. Mär 2006 (CET)
thread_title:  Wrapperklassen für int, bool, etc. 

message: Im Artiekl stehen folgende, sich widersprechende Aussagen:
 Auch bei elementaren Datentypen handelt es sich in C# um Referenztypen,
 die von object abgeleitet werden.
und
  //Löst den Compierfehler  CS0077 aus, da int kein Referenzetyp ist 
Weder hieraus, noch aus dem Hauptartikel C-Sharp geht hervor, was von beidem stimmt, und überhaupt fehlt hier in der Wikipedia eine genaue Beschreibung dessen, wie Referenzen bei C# arbeiten (Der Artikel zur Referenz ist eher auf C++ ausgerichtet). Unter Automatische Speicherbereinigung stehen einige alternativen, aber auch dort wird nur wage angedeutet, welche Variante von C# genutzt wird.
194.95.18.105 01:20, 4. Nov 2005 (CET)
thread_title:  Widerspruch im Artikel und allgemein fehlende Info über Verweise 

message: Habe den Absatz, welcher vor der Benutzung von break und goto warnt geändert. Die Warnung vor dem Schlüsselwort break ist IMHO nicht haltbar da dies durchaus auch in objektorientiertem Code anerkannt ist und die Begründungen zur nicht-verwendung von goto waren zu schwammig formuliert.
High-Fish 00:57, 28. Nov 2005 (CET)
replies: text: goto funktioniert nicht, jedenfalls nicht so oder zumindest nicht bei mir, im allgemeinen dachte ich sowieso das seit Pascal und Turbo goto gestorben sei. Oder liege ich da falsch? 84.227.196.148 20:42, 4. Mär. 2007 (CET)
replies: text: Hin und wieder ist ein Goto nützlich und auch verständlicher, etwa wenn man z.B. aus tief verschachtelten Blöcken herausspringen will/muss. Dieses Goto müsste sonst durch entsprechend viele break-Anweisungen oder durch komplettes Umstellen des Codes ersetzt werden, was den Programmcode dann sehr unübersichtlich machen würde. --RokerHRO 22:59, 18. Aug. 2007 (CEST)

text: Ad goto: Stellen Sie sich einfach zwei verschachtelte For-Schleifen vor. Sie wollen dann aus der inneren Schleife heraus beide Schleifen verlassen. Das geht mit goto sehr einfach und elegant. Eine andere Möglichkeit wäre auch eine Hilfsvariable einzuführen und anhand dieser zu entscheiden, ob die innere Schleife normal beendet wurde oder nicht. Dies würde aber zwangsläufig zu mehr meta-Code führen, daher ist goto in so einem (gar nicht mal so unüblichen) Fall schon sehr nützlich. --84.175.94.82 18:33, 10. Feb. 2015 (CET)
thread_title:  Warnung vor break! 

message: Momentan vermischt der Artikel verschiedene Bedeutungen des Begriffs "Attribut". Im mehreren Abschnitten (z.B. in "Objekte und Klassen") sind Attribute das, was sonst "Variable", "Datenelement" oder (Sonderfall) "Eigenschaft" genannt wird, also die Datenelemente (im Gegensatz zu den Methoden) einer Klasse. Weiter unten ist dann auf einmal von Attributen im Sinne von Metadaten die Rede. --Neitram 13:02, 28. Mär 2006 (CEST)
thread_title:  "Attribut": Begriffsverwirrung 

message: Was genau ist damit gemeint? Es werden in C++ per se alle Objekte als Wertetyp angelegt, oder habe ich "Wertetyp" nicht richtig verstanden? --RokerHRO 18:59, 5. Jul 2006 (CEST)
thread_title:  struct kein "Wertetyp" in C++? 

message: wie mir aufgefallen ist, versteht diesen Artikel wohl nur jemand, der mit Programmiersprache wie C, C++ oder Java einigermaßen bewandet ist. Zwar geht aus den meißten Texten der Sinn des Codes hervor, aber ein bisschen Text wäre doch auch ganz schön.
--Neutralstandpunkt 10:55, 27. Mai 2007 (CEST)
thread_title:  Für Laien schwer Verständlich 

message: Hallo! Wollte mal kurz anmerken das der Datentyp decimal kein Gleitkommadatentyp wie float oder double ist. Hab nicht so viel Zeit das dementsprechend in den Artikel einzubauen. Wenn sich jemand die Zeit dafür nehmen könnte ... hier noch ein paar Referenzen:
* http://msdn2.microsoft.com/en-us/library/364x0z75(vs.71).aspx
* http://msdn2.microsoft.com/en-us/library/678hzkk9(VS.71).aspx
* http://msdn2.microsoft.com/en-us/library/aa691147(VS.71).aspx
* http://www2.hursley.ibm.com/decimal/
Bin mir nicht ganz sicher, ich denke solche Datentypen gehören zu einer eigenen Datentypklasse, d.h. es sind weder Gleitkomma noch Integer noch Festkommazahlen ... 
Viele Grüße -- Meph666  → post 16:13, 1. Jun. 2007 (CEST)
thread_title:  decimal ist kein Gleitkommatyp 

message: String cmd;
...
switch (cmd)
{
  "run":
    Anweisungen;
    break;
  "save":
    Anweisungen;
    break;
  default:
    Anweisungen;
    break;
}
Das gezeigte Beispiel (ist aus dem Artikel) funktioniert so nicht, da die case-Schlüsselwörter fehlen. Oder funktioniert das nur unter VC# 2005 nicht? --Fr4nZ 19:24, 21. Feb. 2008 (CET)
thread_title:  switch-case 

message: Mir fehlen irgendwie generischen Klassen & Co. Sind die bewusst nicht erwaehnt, wurden vergessen, oder mangelt es an Relevanz? --Feuermonster 23:24, 26. Mar. 2009 (CET)
replies: text: Leider gehört .NET zu den Themen die in der WP eher stiefmütterlich behandelt werden. Ich denke aber es fehlt einfach an aktiven Autoren. (nicht signierter Beitrag von 84.130.159.68 (Diskussion | Beiträge) 16:25, 21. Mai 2009 (CEST)
thread_title:  Generics 

message: Ich frage mich gerade, warum auf den englischen Artikel C# programming language und nicht auf den besser passenden C# syntax? Der erstgenannte engl. Artikel verweist nämlich auch nicht zurück, sondern auf C#. (nicht signierter Beitrag von 84.130.155.1 (Diskussion | Beiträge) 13:26, 22. Mai 2009 (CEST)
thread_title:  Link auf Englische Seite 

message: Meiner Meinung nach sollte man den else-if Block streichen, da er leicht missverstanden wird. Rein Syntaktisch ist es bloss ein verschachteltes if im gegensatz zum elseif in php (siehe http://php.net/manual/de/control-structures.elseif.php ).
Anstatt den else-if Block zu erwaehnen, sollte man folgende Punkte klarmachen:
# Dass man an beliebigen Stellen geschweifte Klammern verwenden kann (und sollte) um einen Gueltigkeitsbereich abzugrenzen. (Zum Beispiel um Zwischenergebnisse nicht ewig im Speicher zu behalten.)
# Dass solch ein Scope von einer if Bedingung wie eine einzige Anweisung behandelt wird.
# Und, dass ein if Block selbst auch eine Anweisung ist.
Demzufolge koennte sich jeder selber herleiten, dass ein
if ( foo ){}
else if ( !foo && bar ){}
else{}
nichts weiter ist, als ein
if ( foo ){}
else{
:if ( !foo && bar )
:{}
:else
:{}
}
in dem in der alternativen Anweisung fuer die erste Bedingung eine weitere Verzweigung eingebaut wurde. (nicht signierter Beitrag von 62.112.72.133 (Diskussion) 13:10, 12. Apr. 2011 (CEST)
thread_title:  else if 

message: Es gilt als guter Programmierstil, Interfaces immer mit einem großen I beginnen zu lassen.
  
Im Artikel werden aber die Interfaces A und B deklariert. Müssten die nicht eigentlich IA und IB heißen?
--*Bene* (Diskussion) 09:55, 8. Aug. 2012 (CEST)
thread_title:  Name der Interfaces 

message: Folgendes ist bemängelt (vgl. auch vorhergehende Diskussionen)
* Während klassische Elemente zu viel Platz einnehmen, werden neuere Konzepte nur sehr rudimitär beschrieben. So werden Schleifen und Bedingte Ausführungen sehr detailliert beschrieben, LINQ dagegen kurz abgehandelt. 
* Vieles auf dieser Seite ist nicht C#-spezifisch (höchstens die Syntax), sondern eher .NET-spezifisch. Würde man Sprachelemente von Visual Basic.NET anlegen, dürfte ein grosser Teil bis auf die Codebeispiele redunant aussehen. .NET-Sprachelemente wie using, LINQ, Genrics, Enum, Attribute, try/catch und vieles weiteres sollten also in einer separaten Seite aufgeführt werden und nicht als "C#"-Spezialität "verkauft" werden.
* Es fehlen Wikilinks zu den Elementen. Wer nicht weiss, was eine Schleife ist, kann mit den Beispielen auch nichts anfangen.
* Es wird vieles mit C und C++ verglichen. Warum kaum mit Java? Oder bei den gemeinsamen .NET-Eigenheiten mit anderen .NET-Sprachen? Das erklärt der Artikel nicht.
* Vieles ist redundant. So gibt es Artikel zu LINQ usw., wo auch Beispiele gezeigt werden. Warum nicht daraufhin verweisen (bzw. umgekehrt), statt alles zu wiederholen? --Filzstift ✏ 12:31, 28. Mai 2014 (CEST)
thread_title:  Überarbeiten-Baustein