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 Lalgeriano
Thema: Übergabe einer Referenz und Übergabe einer Kopie bei Methoden
Am im Forum: Grundlagen von C#

Zitat von LaTino
Nein, ich meine ein in seiner Form fest vorgegebenes Objekt, das der Kommunikation dient und die jeweiligen Parameter für die Methoden kapselt. So etwas:

Ah, alles klar. Verstanden, danke für die nähere Erklärung! :-)

@Alf Ator: Ich werde mal versuchen dies in aller Ruhe nachzuvollziehen ohne mich verwirren zu lassen und hoffe es klappt :D

Thema: Übergabe einer Referenz und Übergabe einer Kopie bei Methoden
Am im Forum: Grundlagen von C#

Hallo Leute,

erst einmal Danke für eure Hilfe. Wenn ich es richtig verstehe, dann sollte man auf Methoden mit ref auf Grund eines guten Programmierstils quasi verzichten, sofern dies natürlich möglich ist. Der ref Typ scheint dann ja eher speziell sein zu müssen.

@LaTino: Mit definiertem Objekt meinst Du konkret? Eine vorher festgelegte Variable als Parameter übergeben?


@All: Eventuell versuche ich einfach alles zu schnell und auf Anhieb zu verstehen, das habe ich wohl so an mich :-D Ich denke immer, wenn ich es jetzt nicht verstehe und weiter lese wird dies irgendwann nochmal wichtig, wo die Verständnis dann bereits Voraussetzung ist und ich so nur schwer folgen kann.

Ansonsten bin ich mit dem Buch eigentlich zufrieden, habe allerdings auch keine andere Alternativen zur Hand, außer das Galileo OpenBook (welches mir bzgl. ref aber auch nicht geholfen hat) und vorher das andere C# Buch von Galileo bzw. den Rheinwerken (das es jetzt in der neusten Auflage gibt). Ich habe aber generell auch nichts dagegen zwei Bücher über das selbe Thema parallel zu lesen, damit habe ich persönlich beim Lernen öfters gute Erfahrungen gesammelt. Also, falls jemand noch Anregungen zu Literatur hat, welche wirklich gut und verständlich ist, immer gerne her damit!

Lieben Gruß

Thema: Übergabe einer Referenz und Übergabe einer Kopie bei Methoden
Am im Forum: Grundlagen von C#

Hallo zusammen,

ich mal wieder Nach einer zeitlichen Pausen, die ich dann hauptsächlich zum Wiederholen meines bis lang erlernten Inhaltes durch das Buch "Schrödinger programmiert C#" habe ich mich vor gut 1.5 Woche an das nächste Thema im Buch, nämlich den Methoden gewagt.

Soweit, so gut. Allerdings habe ich ein, anscheinend, riesiges Problem beim Thema Übergabe einer Referenz und Übergabe einer Kopie. Ich weiß, dass per Default bei Datentypen wie int, double etc. pp. immer eine Kopie beim Methodenaufruf übergeben wird und so die originalen Variablen gleich bleiben. Dies kann ich aber explizit mit dem Schlüsselwort ref ändern, sodass der neue Wert, welcher sich durch die Methode gibt, in die Variablen geschrieben wird.

Ein Beispiel aus dem Buch, das ich für die Verständnis mal ein wenig "erweitert" habe ist folgendes.


static void Main(string[] args)
        {
            double var1 = 2.5;
            double var2 = 3.8;
            Console.WriteLine("Der Wert beider Variablen beträgt {0} und {1}", var1, var2);
            SwapOne(ref var1, ref var2);
            Console.WriteLine("Der neue Wert ist {0} und {1}", var1, var2);
            Console.ReadLine();

            double var3 = 5.5;
            double var4 = 8.5;
            Console.WriteLine("Der Wert beider Variablen beträgt {0} und {1}", var3, var4);
            SwapTwo(var3, var4);
            Console.WriteLine("Der neue Wert beträgt {0} und {1}", var3, var4);
            Console.ReadLine();
        }

        static void SwapOne (ref double a, ref double b)
        {
            double temp = a;
            a = b;
            b = temp;
        }

        static void SwapTwo (double x, double y)
        {
            double temp = x;
            x = y;
            y = temp;
        }

Dort sehe ich ja sehr gut, dass durch die 1. Methode mit Ref die Variablen auch vertauscht worden sind, was in diesem Beispiel ja auch durchaus Sinn der Sache ist. Im zweiten wurde nichts beschrieben und es ist so, als wäre gar nichts passiert.

Soweit habe ich die Verständnis, aber irgendwie ist der entscheidende Stein noch nicht ins Rollen gekommen, der mir das ganze logisch erklingen lässt. Ich habe im Galileo OpenBook gelesen, genau so wie hier in der Knowledgebase und auch generell im Internet, aber irgendwie fehlt mir da der Denkanstoss, der mich von der Stelle tritt, auf der ich momentan festklebe.

Eventuell hat jemand noch eine Definition bzw. eigene Erklärung für beide Varianten parat und kann gegebenenfalls erklären, welche Methode für welchen Zweck eher genutzt wird.

Wenn ich die Kopie übergebe und der neue Wert nicht in den Variablen gespeichert wird, wo ist da konkret der Sinn der Methode? Irgendwie scheint mir dort ein Puzzleteil zu fehlen.

Über Hilfe wäre ich dementsprechend sehr dankbar! Vielen Dank im Voraus und lieben Gruß

Lalgeriano

Thema: Mit foreach- und for-Schleifen über ein Array iterieren
Am im Forum: Grundlagen von C#

Danke für den Hinweis @ bb1898. Mit deinem Tip klappt es ebenfalls super.
Da wäre ich spontan gar nicht drauf gekommen, manchmal sieht man den Wald vor lauter Bäume nicht und gleichzeitig ist's wohl noch meine Einsteiger-Naivität :D

Thema: Mit foreach- und for-Schleifen über ein Array iterieren
Am im Forum: Grundlagen von C#

Hallo LaTino,

vielen dank für deine Hilfe/Erklärung und sorry für die etwas verspätete Antwort!

String Builder und String.Format verstehe ich dank der Erklärung nun deutlich besser, nochmals danke an der Stelle!

Zum Thema mit Xamarin. Mit deinem Tipp hat es geklappt! Über System.Text.StringBuilder lässt sich das Code ohne Probleme ausführen. Komisch, dass es anscheinend nicht korrekt referenziert wurde, so lange es aber so geht soll's mir egal sein Danke auch hierfür!

Lieben Gruß
Lalgeriano

Thema: Mit foreach- und for-Schleifen über ein Array iterieren
Am im Forum: Grundlagen von C#

@LaTino: Danke für die nähere Erklärung! :-)

Ich habe noch mal eine Frage die teilweise auf den Strint Builder und das Append zutrifft. Und zwar lerne ich ab und an unterwegs (Uni, im Café oder wo auch immer) mit einem MacBook, da ich nur einen Desktop Computer mit Windows nutze.

Auf dem MacBook habe ich mir Xamarin Studio heruntergeladen und damit bis lang problemlos programmiert. Ich nutze dort die Mono 4.0.4 Runtime und habe auch immer fleißig Updates installiert.

Nun wollte ich ein wenig am MacBook mit dem StringBuilder und String Format üben. Letzteres ist auch kein Problem, beim String Builder bekomme ich hingegen immer einen Fehler, die ich mal als Kommentar in die Zeile packe.


StringBuilder builder = new StringBuilder(); //String Builder is a namespace but a type was expected
	// Append to StringBuilder.
	for (int i = 0; i < 10; i++)
	{
	    builder.Append(i).Append(" "); //a local variable builder cannot be used before declared
	}
	Console.WriteLine(builder); //a local variable builder cannot be used before declared


Am Desktop Computer mit Windows und Visual Studio 2015 klappt es ohne Probleme.

Hat jemand eine Ahnung wie es zu dieser Differenz und damit zum Fehler auf dem MacBook kommen kann? Als Betriebssystem läuft dort Yosemite.

Kurze Frage am Rande: Sollte man das String Format dem Strint Builder vorziehen? Geht's dabei eher um eine Glaubensfrage? Bin dort noch leicht hin und her gerissen.

Danke und lieben Gruß,
Lalgeriano

Thema: Mit foreach- und for-Schleifen über ein Array iterieren
Am im Forum: Grundlagen von C#

Hallo Leute,

erst einmal vielen Dank für die Hilfe und eure Erklärungen, speziell an DerKleineTomy und Ezio.
Die Erklärungen haben mir doch schon einmal sehr weiter geholfen und mein Verständnis vertief.

Ich merke auf jeden Fall, dass ich nicht immer nur sehr oberflächlich denken und von einer Konsolenausgabe ausgehen soll

Dank euren Beispielen und Erklärungen blicke ich nun langsam in den angeführten Themen durch und arbeite mich vor, nochmals ein riesengroßes Dankeschön, dass ihr euch durch meine wohl (für euch) eher mühseligen Fragen arbeitet

Bezüglich der Performance @ LaTino und Abt: Ich werde mal ein Auge auf die performance technischen Seiten halten, mich dennoch wohl erst einmal konkret auf die Grundlagen versteifen und schauen wie sie sitzen, das andere aber dennoch nicht komplett aus dem Auge lassen. Auch für diese Hinweise selbstverständlich noch einmal ein dickes Dankeschön! =)

Auch die Links von Ezio, abt und LaTino werde ich beherzigen und immer mal wieder drauf zurück schweifen und mein Verständnis soweit vertiefen.


Eine kleine Frage fällt mir grad aber noch ein: Bezüglich des String und der Zuweisung von null. Eventuell denke ich schon wieder zu weit oder einfach falsch um die Ecke. Wie Ezio erklärte, verweist ein String = null auf keinen Speicherbereich. Wieso wäre es also sinnvoll einen String = null zu setzen?

Wäre dies wie mit Objekten, die gelöscht werden können? Dass man diese quasi auf null setzt, damit der Garbage Collector bescheid weiß, dass er sie abbauen kann?

Nochmals danke im Voraus und einen guten Start in die Woche

Thema: Mit foreach- und for-Schleifen über ein Array iterieren
Am im Forum: Grundlagen von C#

So, erst einmal nochmal vielen lieben Dank für die Hilfe und Erklärungen


1. Ich habe mir nun das Array von OlafSt zu Herzen genommen und dort einmal eine for- und eine foreach-Schleife durchlaufen lassen, ähnlich wie die im Ausgangsbeitrag. Nun bekomme ich beides mal die Zahlen von 1 bis 15 ausgespuckt. Die for-Schleife scheint mir nun allerdings keinen Index mehr auszugeben, da dieser ja von 0 bis ausschließlich 14 laufen sollte? Ich glaube, da habe ich irgendwo noch einen Denkfehler. [EDIT: Hat sich erledigt, muss ja die Laufvariable und nicht das Array ausgeben. Habe da zu schnell getippt und zu wenig nachgedacht ]

2. Ich habe im Buch nun Methoden für den String abgearbeitet, sprich "Funktionen" wie Trim, IndexOf, Split und so weiter und so fort. Soweit ist auch alles klar. Gibt es auch eine Möglichkeit (rein theoretisch) Leerstellen mitten im Text zu entfernen, sodass der Satz komplett zusammen hängt? Mit Trim kann ich ja lediglich Leerzeichen am Anfang oder Ende entfernen.

3. Auch wurden die Methoden mit String Builder / Append und String.Format behandelt. Bei String.Format war nun folgendes, konkretes Beispiel angegeben:


string text = "Schrödinger ist cool";
int len = text.length;
string [] words = text.Split (' ');
string newText = string.Format ("Die Länge: {0}. Anzahl der Wörter: {1}", len, words.length);

Soweit ist es mir auch klar und verständlich. Nun wird in der letzten Zeile allerdings die Funktion Format aufgerufen um den nachfolgenden String eben zu formatieren. Ich sehe allerdings absolut keinen Unterschied zu dieser letzten Zeile und zu einer Zeile mit Console.WriteLine () und dann eben den Text mit Platzhaltern. Wo wäre dort genau der Unterschied? (Im Buch wird erwähnt, dass es generell keinen Sinn macht konstante String Werte mit String.Format auszugeben, es soll nur zur Veranschaulichung dienen).

4. Eine Aufgabe war es nun, einen eingegebenen Text rückwärts in eine neue Variable zu speichern und auszugeben. Dort wurde nun folgende Lösung präsentiert, wo ich ein wenig Probleme habe, diese richtig nachzuvollziehen. Meine Gedankengänge füge ich mal als Kommentar hinter der Zeile an.


Console.WriteLine ("Text eingeben");
string text = Console.ReadLine ();
string neuerText = "";

char [] inverted = new char [text.length]; // es wird ein char Array angelegt, das so groß ist, wie der Text lang.
for (int i = 0; i < inverted.Length; i++) // Die Schleife läuft bis i < inverted.Length weil es sonst über die Länge hinaus laufen würde? 
{ inverted [i] = text [inverted.Length - 1 - i] } // Die Zeile verstehe ich nicht ganz.  
neuerText = new String (inverted); // Die Var. neuerText bekommt quasi das Ergebnis aus der Variable inverted geliefert.
Console.WriteLine ("Der invertierte Text: {0}", neuerText);

5. Es kam Nullable dran. Wenn ich dies richtig verstehe, werden nur Datentypen wie bool, char oder Zahlen mit einem ? nullable gemacht. Wenn ich einen String nicht zuweisen will, klappt dies nicht über ein ? sondern mit der methode String.Empty oder einfach mit "" - ist das soweit korrekt?

6. Angenommen ich baue nun folgendes:


int? meinInt = null;
int meinNeuerInteger = meinInt.Value

Vorweg: Ich habe verstanden, dass die Methode .Value den tatsächlichen Wert abbildet, den, in diesem Fall meine Variable meinInt, besitzt. In diesem Fall würde dies zu einem Fehler führen, da meinInt = null ist.

Würde meinInt nun einen Wert enthalten, beispielsweise die Zahl 10. WIESO sollte ich dann mit der Methode .Value darauf zugreifen und diese nicht einfach über Beispielsweise Console.WriteLine (meinInt) auslesen? Wo befindet sich der konkrete Unterschied? Ich bekomme doch in beiden Fällen den Wert, den meine Variable enthält, ausgegeben, oder?




So, das wären nun erstmal meine weiteren Frage. Langsam wird's wohl peinlich mit der Fragerei Aber oft ist die Hilfe von Personen, die sich selbst in der Materie befinden und es nachvollziehen können hilfreicher als begleitendes Material wie Videos oder nur das Buch

Lieben Gruß und schonmal danke für die Mühe!

Lalgeriano

Thema: Mit foreach- und for-Schleifen über ein Array iterieren
Am im Forum: Grundlagen von C#

Alles klar, das erklärt dann einiges, danke für die Hilfe Jungs

Zitat
Ansonsten gibst du das eine mal die Zählvariable aus, und das andere Mal den Inhalt deines Arrays an der Stelle, die die Zählvariable gerade beschreibt.

Ist dies dann auch der Grund, wieso ich bei der normale for Ausgabe die Indizes von 0-10 als Ausgabe bekomme und mit der for Schleife und dem ToString den Inhalt?

P.S: Ich muss sagen, dass ich mit dem Buch soweit schon ganz gut lernen kann und einen recht einfachen und guten Einstieg bekomme. Das mal Fragen auftauchen ist ja recht normal, ergänzende Lektüre oder ein gutes Forum wie dieses hier, ist glaube ich immer unverzichtbar

Thema: Mit foreach- und for-Schleifen über ein Array iterieren
Am im Forum: Grundlagen von C#

Vielen Dank!

Wieso wäre in diesem Beispiel "ToString" von Bedeutung? Im Buch wird die Methode "ToString" erst im kommenden Kapitel abgehandelt und noch nicht an dieser Stelle.

Ich weiß durch lesen aber nun, dass diese Methode die Ausgabe, in diesem Fall, in einen String umwandelt. Wieso wäre dies in diesem Beispiel ratsam? Oder ist dies eher einer Konvention, der man generell folgen sollte?

Lieben Gruß



EDIT:

Habe die Ausgabe nun nochmal mit dem ToString zusätzlich gemacht. Jetzt kommt ja aber eins zu eins das selbe raus wie bei der foreach Schleife. Warum eigentlich?

Die Ausgabe sieht so aus:

Zitat
1
2
3
4
5
6
7
8
9
10
15

Bei der Ausgabe mit dem i ohne ToString sah sie so aus:
Zitat
0
1
2
3
4
5
6
7
8
9
10

Durch das ToString würde ich doch den selben Effekt mit einer for Schleife schaffen, den die foreach auch hat oder? Also jeden konkreten Wert auslesen.

Mit der for Schleife ohne das ToString bekomme ich ja aber den Index angegeben, also beginnend bei 0 und ohne die 15, da es ja genau 11 Werte sind.

Thema: Mit foreach- und for-Schleifen über ein Array iterieren
Am im Forum: Grundlagen von C#

Ich grüße euch liebe Community,

ich mache mit dem Lernen von C# über das Buch "Schrödinger Programmiert" vom Rheinwerke Verlag gute Fortschritte und habe mich nun erfolgreich durch den Dschungel von Datentypen, boolschen Ausdrücken und co. gekämpft

Bevor es im Buch nun mit objektorientiertem Programmieren los geht, werde noch Arrays (sowohl klassische, als auch Strings an sich) und Schleifen behandelt.

Soweit verstehe ich dies auch ohne Probleme, allerdings habe ich aktuell noch eine grundlegende Verständnisfrage, um zu wissen, ob ich hier auf der richtigen Spur bin (keine Sorge, ich werde in den nächsten Tagen wohl noch mal auf String und co. hier zurückkehren ). Nun aber zur Frage und Ausgangssituation:


1. Ich baue mir ein ganz normales, beliebiges Array mit ein paar Zahlen drin.


int[] meinArray = new int [] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 15 };

2. Nun möchte ich die Werte aus diesem Array ausgeben. Dazu nutze ich nun einmal die foreach Schleife wie folgt.


foreach (int meinWert in meinArray) {
				Console.WriteLine (meinWert);

			}

-> Wenn ich dies nun korrekt verstehe wird eine Variable vom Typ int (in dem Fall "meinWert") dem Array "meinArray" übergeben, nimmt jeden einzelnen Wert in diesem Array an und gibt diesen über die Konsole aus, sodass ich weiß, welche konkreten Werte ich in diesem Array geparkt habe, richtig?

3. Nun gibt es im Buch auch noch eine Möglichkeit etwas ähnliches mit einer for Schleife zu bauen, nämlich so.


for (int i = 0; i < meinArray.Length; i++) {
				Console.WriteLine (i);

			}

-> Wenn ich es richtig verstehe wird hier natürlich nicht wie bei foreach jeder Wert konkret in der Konsole abgebildet, sondern nur der Index ausgegeben, bis wohin / an welcher Stelle Werte (welche auch immer) gespeichert sind.


Ist mein Gedankengang soweit korrekt?

Danke im Voraus und ganz lieben Gruß,

Lalgeriano

Thema: Einsteigerfragen zu Datentypen und Operatoren
Am im Forum: Grundlagen von C#

Zitat von Talon
Zitat von Lalgeriano
Es wird erst einmal gesagt, dass man mit && bzw. || Ausdrücke verknüpfen kann. Sind bei && beide Ausdrücke wahr, ist das Ergebnis ebenfalls war. Ist bei || einer der beiden Ausdrücke wahr, ist das Ergebnis ebenfalls wahr. Das verstehe ich und ist logisch.
-> Irgendwie habe ich da noch ein Problem mit, ich glaube, dass ich dort irgendwo noch etwas falsch nachvollziehe Über weitere Hilfe (gerne an einem eigenen Beispiel) wäre ich dankbar! :-)
Vielleicht hilft dir das weiter.
&& Operator (C# Reference) und || Operator (C# Reference).

Danke! Auch dies werde ich mir genauer zu Gemüte führen :-)
Laut dieser Beschreibung entspricht && aber dem &, nur das bei & beide ausgewertet werden, auch wenn das Ergebnis schon vorher feststeht?


Darüber hinaus noch eine kurze Frage die mir an dem unteren Beispiel gekommen ist:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApplication5
{
    class Program
    {
        static void Main(string[] args)
        {
            bool feiertag = true;
            bool sonntag = false;
            feiertag |= sonntag;   //Alternativ feiertag = feiertag | sonntag
            Console.WriteLine(feiertag);
            Console.ReadKey();
        }
    }
}

Er speichert also das Ergebnis in feiertag, wenn feiertag oder sonntag wahr ist. Soweit nun alles verstanden. Mir fehlt grad nur ein klein wenig das Verständnis (eventuell weil ich kein Konkreten Fall im Kopf habe ) wo dies nützlich ist, SOFERN feiertag in dem Beispiel eh schon true als Ausgangswert hat. Bei komplexeren Strukturen wird dies gewiss Sinn machen, da eventuell durch verschiedene Operationen das Ergebnis nicht zwingend mehr den Ausgangswert hat nehme ich an, oder?

Thema: Einsteigerfragen zu Datentypen und Operatoren
Am im Forum: Grundlagen von C#

Hallo Leute,

danke für eure super Hilfe! Nun ist das Verständnis endlich da. Ebenfalls danke für die Beispiele und an OlafSt für das noch ganz konkrete Beispiel bzgl. & und && bzw. | und ||

Vielen, vielen Dank dafür! :-)

Lieben Gruß und einen schönen Sonntag!

Lalgeriano

Thema: C# und Unity - Womit wie beginnen?
Am im Forum: Grundlagen von C#

Hi 19Alex99,

danke für den Tip! Den Kanal kannte ich bis lang noch gar nicht! Ich werde ihn mir in den nächsten Tagen definitiv zu Gemüte führen! :-)

Lieben Gruß,
Lalgeriano

Thema: Einsteigerfragen zu Datentypen und Operatoren
Am im Forum: Grundlagen von C#

Zitat von p!lle
Ab und zu gibt es in Büchern (oder auch in Beispielen der MSDN) syntaktische Fehler.
Warum das so ist, kann man nur mutmaßen, ich vermute einfach nachträgliches Hinzufügen oder 'blindes' Programmieren. ;)

Alles klar, dann kommt nun so langsam die Verständnis :-D

Der Folgende Code wäre dann für dieses Beispiel auch der einzig, syntaktisch richtige, nehme ich an:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApplication5
{
    class Program
    {
        static void Main(string[] args)
        {
            bool feiertag = true;
            bool sonntag = false;
            feiertag |= sonntag;   //Alternativ feiertag = feiertag | sonntag
            Console.WriteLine(feiertag);
            Console.ReadKey();
        }
    }
}

-> Wenn dem so ist, gibt es eventuell ein konkretes Beispiel, wann man eher || und wann | nutzt? inflames2k hat ja für | schon ein Beispiel genannt, mich würde eher interessieren, wann (in der Praxis) eben dieser Operator und wann eher der || Operator gebraucht wird :-)

Nochmals Danke für die Antworten und danke im Voraus! :)

Lieben Gruß

Thema: Einsteigerfragen zu Datentypen und Operatoren
Am im Forum: Grundlagen von C#

Ah, da sollte ich eigentlich auch selber drauf kommen :-D Danke!

Mich verwirrt nur, wieso im Buch explizit "bool feiertag |= sonntag" geschrieben wurde, wohl nur zur Veranschaulichung?

Selbiges bei: bool feiertag = feiertag | sonntag;

Würde so ja auch zu keinem Ergebnis führen, wenn ich vorher nicht explizit feiertag und sonntag definiere. Sonst kommt ja wieder der Fehler, dass eine der beiden Variablen vorher nicht definiert wurden. Folglich wäre das bool an der Stelle ja Fehl am Platze, soll es nicht zur reinen Veranschaulichung dienen, oder?

Thema: Einsteigerfragen zu Datentypen und Operatoren
Am im Forum: Grundlagen von C#

Alles klar, danke für die etwas tiefere Erklärung :-)

Kurz eine Frage zum Syntax bzgl. des |= Operators.

Wenn ich folgendes schreibe:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApplication5
{
    class Program
    {
        static void Main(string[] args)
        {
            bool feiertag = true;
            bool sonntag = false;
            bool feiertag |= sonntag;
            Console.WriteLine(feiertag);
            Console.ReadKey();
        }
    }
}

Bekomme ich Fehler. Sowohl das feiertag bereits als lokale Variable in diesem Bereich definiert ist, als auch, dass |= ein ungültiger Ausdruck ist.


Wenn ich im oberen Programmcode nun die erste Zeile entferne und dort die Variable feiertag nicht definiere, bekomme ich zwar die Meldung, dass ein Fehler beim Erstellen vorhanden ist, kann aber aus der Debug-Konsole nichts weiter auslesen.


-> Wie wäre der Syntax nun korrekt? Bzw. was mache ich konkret falsch?

Danke!

Thema: Einsteigerfragen zu Datentypen und Operatoren
Am im Forum: Grundlagen von C#

Hallo Leute,

danke für die zahlreichen Antworten und Tips!

1. Um kurz nochmal zur Frage eins zu kommen. Müsste das short denn nicht trotzdem gelistet sein? Ein long ist ja auch ein int64, oder? Folglich müsste doch entweder auch long fehlen oder short dort stehen, oder?

2. Heißt das, wenn ich zum Beispiel eine ganze Zahl, nehmen wir die 25 als Beispiel, in ein Float packe, hat das System im "Hinterkopf" quasi 25.00, zeigt die Nachkommastelle dort aber nicht an, weil sie quasi bei .00 keine Bedeutung hat? Im Buch gab es dazu ein Beispiel, indem man die Schuhgröße berechnet hat. Dort wurde erst eine Variable "Fusslänge" vom Typ float angelegt, in der die ganze Zahl 24 gespeichert wurde. Dies wurde dort dann gemacht, weil die Fusslänge ja auch Nachkommastellen habe kann und nicht nur aus ganzen Zahlen besteht. Folglich sollte ich mir als vorher einfach Gednaken machen, ob dort Fliesskommazahlen entstehen können, und wenn ja, direkt einen float verwenden, auch wenn dort (erst) mal ganze Zahlen drin stehen, ja?

3. Alles klar, da hat sich die Frage dann erledigt. Dann werde ich das int nehmen, außer ich sollte mal eine größere Zahl brauchen (dann halt long) oder wirklich ganz spezifisch was kleineres haben wollen :-)

4. Da bin ich leider immer noch ein wenig verwirrt, habe grad aber das Buch zur Hand, dass ich hier nochmal ein paar mehr Informationen geben kann.


Es wird erst einmal gesagt, dass man mit && bzw. || Ausdrücke verknüpfen kann. Sind bei && beide Ausdrücke wahr, ist das Ergebnis ebenfalls war. Ist bei || einer der beiden Ausdrücke wahr, ist das Ergebnis ebenfalls wahr. Das verstehe ich und ist logisch.

Zitat
Hat man also Beispielsweise:

bool fisch = true;
bool fleisch = false;
bool abendEssen = fisch || fleisch

-> Das Ergebnis bei abendEssen wäre also true, da fisch true ist. Soweit alles klar!

Ich zitiere: "Der Operatore |= verbindet eine ODER-Verknüpfung mit einer Zuweisung."

bool feiertag |= sonntag

"Damit enthält feiertag den Wert true, falls feiertag bereits diesen Wert hat oder sonntag den Wert true hat. Dies ist die Kurzform von: bool feiertag = feiertag | sonntag"

Irgendwie leuchtet mir dies noch nicht ganz ein. Anhand diesen Beispiels:

1. Ich definiere für feiertag erst einmal true oder false.
2. Das selbe tue ich für sonntag auch.
3. Wenn eins der beiden true ist, wird das Ergebnis in feiertag gespeichert.
4. Wenn keins der beiden wahr ist, enthält feiertag false?

Da ich die beiden Variablen oben ja aber bereits definiere, weiß ich ja schon, dass feiertag true sein wird, oder? Außerdem muss er doch nichts mehr in feiertag speichern, wenn diese Variable bereits vorher den Wert true enthält, oder?

-> Irgendwie habe ich da noch ein Problem mit, ich glaube, dass ich dort irgendwo noch etwas falsch nachvollziehe :D Über weitere Hilfe (gerne an einem eigenen Beispiel) wäre ich dankbar! :-)

Lieben Gruß
Lalgeriano

Und nochmal danke an Ezio für den Link zum OpenBook. Dies werde ich mir zu Herzen nehmen! :-)

Thema: Einsteigerfragen zu Datentypen und Operatoren
Am im Forum: Grundlagen von C#

Ich mal wieder :-D Und wie bereits vorgewarnt komme ich gleich mal mit ein paar Fragen auf euch zu, die sich beim Lesen des Buches "Schrödinger programmiert C#" gestellt haben.

Da ich denke, dass grad die Basics wichtig sind, mag ich dies auch gar nicht lange schleifen lassen und mal direkt die Profis fragen. Natürlich habe ich bereits vorher gegoogled, mir die Microsoft-Webseite zum Thema C# angeschaut etc, aber irgendwie ist der Groschen noch nicht ganz gefallen bzw. ich ein wenig verwirrt.

Also, mal zu den, wahrscheinlich recht einfach zu beantwortenden, fragen:

1. Im Buch steht, dass die Datentypen byte, int und long sowie deren unsigned Variante für ganze Zahlen verwendet werden. Wie sieht es denn mit dem Datentyp short aus? Mit diesem lassen sich doch ebenfalls ganze Zahlen darstellen, nur etwas größere als byte, oder?

2. In einem Beispiel im Buch wird für eine ganze Zahl der Datentyp float anstatt int verwendet, da der Compiler dies ja automatisch konvertiert?! Sollte man dies generell vorziehen oder wirklich nur, wenn man nicht hundert prozentig weiß, ob die variable mit dem Datentyp nie eine Fließkommazahl sein wird?

3. Oft sehe ich, dass Zahlen wie zum Beispiel 24 in einem int gespeichert werden, wobei die Zahlen ja auch in kleineren Datentypen passen würden. Sollte man heutzutage generell eher int bevorzugen, falls man nicht ausschließen kann, dass die Zahlen mal irgendwann den Wertebereich des kleineren Datentyps übersteigt?

4. Die Vergleichsoperatoren machen mir noch ein wenig zu schaffen. Grad || und |=
Da blicke ich grad nicht mehr ganz durch!

Generell würde ich ein Programm doch so aufbauen:

bool sonntag = true;
bool samstag = false;

bool istWochenende = sonntag || samstag

Dann würde natürlich true rauskommen, da mein sonntag ja true ist. Oder?

Wie setze ich nun den |= Operator ein? Wenn ich dies im oberen Beispiel tun würde, käme doch das selbe Ergebnis raus und dem sonntag wird true zugewiesen, was ja aber eh true wäre?

Irgendwo hängt das grad bei mir ein wenig :-D

Über Hilfe wäre ich dankbar!

Lieben Gruß

Thema: C# und Unity - Womit wie beginnen?
Am im Forum: Grundlagen von C#

Hallo alle zusammen und danke für die Einstiegshilfe :-)

Die von euch angegebenen Links werde ich mir zu Herzen nehmen und in Ruhe durch lesen, sowie mich dort ein wenig durch klicken.

Das schwere ist, grad zu Anfang für einen relativen Anfängern, ein wenig durchzublicken. Neben den unzähligen Programmiersprachen kommt dann halt vor allem auch das Thema auf, wie man am besten anfängt und einsteigt, welches Buch sich am besten für einen guten und strukturierten Einstieg eignet etc.

Mein Plan sieht nun folgendermaßen aus:

1. Erst einmal C# lernen. Habe mir das Buch "Schrödinger Programmiert" zugelegt und von einem Bekannten noch das Buch "Einstieg in Visual C# 2013" bekommen. Ersteres ist auch bereits für C#6 angepasst und zeigt die Unterschiede zu dieser Version und seinem Vorgänger. Damit komme ich auch super klar, da es einen einfachen und leicht verständlichen Einstieg gibt.

2. Währenddessen wollte ich mir alle noch auftauchenden Fragen aufschreiben und diese anschließend per Internet abarbeiten bzw. hier euch fragen :)

3. Anschließend würde ich mich erst um die Spieleprogrammierung kümmern, ich denke ein fundiertes (Grund-) Wissen in der jeweiligen Programmiersprache ist immer gut und nicht zu verachten. Da meine Wahl auf Unity fiel, buckel ich nun erst mal die beiden genannten C# Bücher durch und löchere euch ggf. mit Fragen :D

Meine Wahl würde bei der Spieleprogrammierung dann zur gegebener Zeit auch eher auf Old-School Spiele wie bei guten Super Nintendo fallen. Sprich erst einmal klassische Sidescroller á la Metroid, Mega Man, Castlevania und co. und irgendwann eventuell Action-RPGs wie das damalie Secret of Mana und co. Natürlich mit einer moderneren Grafik :) Aber bis dahin ist es natürlich noch ein anstrengender Weg, aber den ersten Schritt muss man natürlich auch erst mal gehen.

So, abschließend noch einmal Danke für eure Zeit und Tips! Ich werde dann bald gewiss mit Fragen zum Thema C# auf euch zukommen :D

P.S: Empfiehlt es sich aktuell eher C#6 mit .NET 4.5.2 in VS2015 zu nutzen oder doch bereits .NET 4.6 mit C#6 in VS2015?

Lieben Gruß
Lalgeriano

Thema: C# und Unity - Womit wie beginnen?
Am im Forum: Grundlagen von C#

Hallo Leute,

ich habe Erfahrungen in der generellen OOP, kenne mich ein Stückchen mit C++ und Objective-C sowie PHP aus.

Ich würde gerne C# gründlich lernen, da mich die Sprache zum Einen einfach reizt und zum Anderen ich sehr am Thema Unity, Programmierung von 2D Spielen für diverse Plattformen interessiert bin.

Da ich mich nun mit C# und Unity noch gar nicht auskenne und bist auf Objective-C und etwas generelle Erfahrung eher Basics beherrsche, ist meine Frage womit ich eher beginnen soll.

Ich lerne am liebsten mit Büchern oder, ergänzend dazu, Video-Trainings, wie die des Rheinwerke-Verlags.

Generelle Fragen die sich mir nun stellen sind folgende:

1. Erst gründlich C# lernen und dann Unity, da letzteres in C# geschrieben wird? Wohl ja, oder? Wobei Bücher die Unity behandeln ja gewiss auch auf C# eingehen, aber wohl eher nicht so tiefgründig?

2. Welche Bücher und/oder Video-Trainings sind sehr empfehlenswert für Anfänger im Bereich C#? Am liebsten vom Einstieg, die Basics bis hin zu komplexeren Dingen.

2.2. Gute Unity Bücher? Sehe bei Amazon immer die üblichen Verdächtigen. Dort gibt es auch ein Buch von Carsten Seifert das "Spiele entwickeln mit Unity" heißt, ein anderes, etwas aktuelleres von ihm heißt "Spiele entwickeln mit Unity 5" - es wäre dann wohl sinniger direkt zu letzterem zu greifen, oder behandelt das normale "Spiele entwickeln mit Unity" nochmal andere Sache und das zu 5 nur spezifisch dessen Neuerungen?

3. Soweit ich korrekt informiert bin nutzt Unity Mono 2.6 und dies unterstützt C+ 4.0. Ich hingegen nutze an meinem Windows 10 Computer bereits das neue Visual Studio und würde dementsprechend auch sehr gerne direkt mit C# 6.0 durchstarten. Ich weiß, dass man Unity wohl durch Umwege auf C# 6.0 bringen kann. Aber generell: Wenn man C# 6 beherrscht, ist es generell schwer auf 4.0 einzusteigen?