Da die 1 in "" steht. Rechnet dann diese Zeile
foreach (string elem in ht.Values)
den Hashcode selber aus? Oder sind das nur Zufallszahlen die rauskommen?
Code:
ht1.Add("1","Wert 1 in ht1");
"1" ist hier der Schlüssel (der als Hashcode gespeichert wird) für den Wert, der "Wert1 in ht1" ist.
Die Hashtable kann man nur mit der foreach Schleife durchgehen, weil kein integer-index vorhanden ist.
Für jedes element (elem), dass ein String ist und in ht.Values vorhanden ist, wird die Schleife ausgeführt und
Gibt dann den Wert (nicht den Schlüssel) aus. Der Wert ist hier "Wert 1 in ht1"
Der Schlüssel, der als Hashcode gespeichert ist, wird mit
Code:
foreach (object elem in ht.Keys)
{
Console.WriteLine(elem.GetHashCode());
}
ausgegeben.
Dort müssen die Objekte in als 'object'-Variable durchlaufen werden, da sie in einer Hashtable als integer, in der anderen als string gespeichert sind. Deshalb ergeben beides Hashtables auch unterschiedliche Hashwerte.
//EDIT:
Ich hab hier dann nochwas für dich, wenn du das mit den 'Referenzen übergeben' von deinem Ausbilder noch einbauen willst, falls du nicht genau wusstest was damit gemeint war. Gestern dachte ich, dass damit eben das normale Arbeiten mit Objekten gemeint war, aber mir ist dann als ich es gerade nochmal gelesen habe doch noch eingefallen, was damit wohl wirklich gemeint sein sollte
:
Code:
class CDemo
{
public void byValue(int i)
{
i++;
}
}
class Class1
{
static void Main()
{
CDemo demo = new CDemo();
int i = 10;
demo.byValue(i);
// Hier ist i immernoch 10
Console.WriteLine(i);
Console.ReadLine();
}
}
Hier wird der Wert von i kopiert und wird innerhalb der Methode verwendet, außerhalb hat das auf diese Variable aber keinen Einfluss.
i wird "By Value" übergeben.
Code:
class CDemo
{
public void byRef(ref int i)
{
i++;
}
}
class Class1
{
static void Main()
{
CDemo demo = new CDemo();
int i = 10;
demo.byRef(ref i);
// Hier ist i nun 11
Console.WriteLine(i);
Console.ReadLine();
}
}
Das Gleiche wie oben, nur das i 'by Reference" übergeben wird. Hiervon wird dann natürlich auch die 'äußere' Variable beeinflusst,