C# Probleme mit Klassen und Konstruktoren

Zu 1) Ich meine, dass ich die Bezeichnung "Datum" auch noch an anderer Stelle gesehen habe ich glaube es war von "Memberdatum" oder so die Rede deshalb dachte ich das hier entweder von einer Variabel oder einer Klasseninstanz welche Member von der Klasse Stuck ist, die Rede ist und nicht einem Speicherort für einen kaländermässigen Termin.

Der genaue Wortlaut ist hier:

bool Push(Object o) soll follgende Funktion haben:

Legt ein beliebieges Datum auf den Stuck. Die Methode gibt true zurück, falls das übergebene Datum erfolgreich auf den Stuck gelegt werden konnte und andernfalls false.

Ich glaube nicht, dass damit ein kaländermässiger Termin gemeint ist oder?

Zu 2) Das wird ich mal testen. Ist denn Dipose() eine Funktion die von System abstammt und automatisch an jede C# Klasse vererbt wird?
 
zu 1.

Klassen ohne modifier sind internal (nur innerhalb des assemblys sichtbar)
attributte ohne (zugriffs) modifier sind private.

Hoffe konnte damit helfen, aber so richtig habe ich die frage wohl nicht verstanden.



zu 2.3: Google hilft (c# hat eine stack klasse)

auf keinen fall musst du dispose ueberschreiben. Und ja das ist std. und nennt sich garbage collector. sovern dispose nicht implemetiert ist

EDIT:
Amped schrieb:
double myDouble = 2006;
float myFloat = 0;
myFloat = (float)myDouble;
EDIT2: völliger blödsinn

jo, habe es gerade erst gesehen :).

ein double auf float casten -> das geht nicht! Warum das so ist, nimm es als denksportaufgabe, oder google es ;)
 
Zuletzt bearbeitet:
Warum soll es nicht gehen?

Code:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace dct
{
    class Program
    {
        static void Main(string[] args)
        {
            float f = 5.4f;
            double d = (double)f;
            Console.WriteLine(d);
            Console.ReadLine();
        }
    }
}
Natürlich treten da dann schneller Ungenauigkeiten auf, aber der cast geht ...

Wie es in anderen Sprachen aussieht, ist egal, wir reden hier von C#.
In Java gehts auch btw...
 
Zuletzt bearbeitet:
Funktioniert auch, kann nur theoretisch scheitern:

Casting Double to Float and Vice Versa

When you cast a float to a double, the system extends the number"s precision without changing its true value. However, when you cast a double to a float, the system shrinks the number"s precision, and this shrinking may change the number"s value because of rounding. The rounding generally occurs on the sixth or seventh decimal digit. Also, when you cast down from double to float, you run the risk of causing a run-time overflow error caused by a double that is too big or too small to fit in a float.
 
Rundungsfehler hat man ja auch schon wenn man von Gleitkomma nach Ganzzahl castet ;-)
Wie bei vielen Casts leidet eben die Präzision... wenn es nicht so wäre, wofür bräuchte man dann denn die verschiedenen Typen ^^
 
Da kann mehr als ein Rundungsfehler auftreten

und die versciedenen Typen braucht man zur Speicheroptimierung, aber klar du kannst auch anstelle eines bool auch int64 verwenden ;) (das war frech, sry ;)).

und ein double (explizit) auf ein float zu casten hat in etwa die gleiche wirkung wie ein int64 auf int (int32) explizit zu casten. Sprich wenn das gespeicherte val in int 64 in das val int32 reinpasst ist alles gut, anderenfalls -> pech gehabt
 
Abcd12345 schrieb:
Zu 1) Ich meine, dass ich die Bezeichnung "Datum" auch noch an anderer Stelle gesehen habe ich glaube es war von "Memberdatum" oder so die Rede deshalb dachte ich das hier entweder von einer Variabel oder einer Klasseninstanz welche Member von der Klasse Stuck ist, die Rede ist und nicht einem Speicherort für einen kaländermässigen Termin.

Der genaue Wortlaut ist hier:

bool Push(Object o) soll follgende Funktion haben:

Legt ein beliebieges Datum auf den Stuck. Die Methode gibt true zurück, falls das übergebene Datum erfolgreich auf den Stuck gelegt werden konnte und andernfalls false.

Ich glaube nicht, dass damit ein kaländermässiger Termin gemeint ist oder?

Datum ist in dem Fall der Singular (Einzahl) von Daten. Was die/der Aufgabensteller damit sagen will, ist, dass es keine Festlegung über die Art der Daten, die auf den Stack sollen, existiert. Man soll also die Stack Klasse so implementieren (auch wenn C# schon eine besitzt, es geht hier um das Üben von Abstrakten Datentypen), dass sowohl Strings als auch Ints als auch Doubles als auch komplexe Objekte auf den Stack gelegt werden können (deswegen auch "bool Push(Object o)").
 
WingX schrieb:
dass sowohl Strings als auch Ints als auch Doubles als auch komplexe Objekte auf den Stack gelegt werden können (deswegen auch "bool Push(Object o)").

und genau dies ist implementiert. Sprich mit der .net implementierung wird ein object als parameter erwartet, spricht es koennen sowohl reference als auch valuetypes auf den stack gelegt werden koennen.
 
Danke nochmal,

Also die Parameterangabe des Objekts hat mich auch etwas verwirrt, da ich wie ich finde im Buch kaum bis garnicht auf den Typ Objekt eingegangen wurde "oder ich habe es übersehen"..

Ist "object" jetzt also ein variabler Variablentyp?

Wenn ich jetzt also follgendes mache:

Code:
object Beliebieg;

Dann habe ich mir eine Variabel erzeugt, die alles sein kann sowohl float double als auch integer?

Wählt der compiler oder das Programm bei laufzeit dann autmatisch aus welchen Datentyp die Variabel annehmen soll?

Gruß Abcd
 
Sorry aber ich sehe auf der ganzen Seite keine Erklärungen zum Typ Object unter welchen Punkt soll diese erklärung denn sein?
 
Zurück
Oben