Folge dem Video um zu sehen, wie unsere Website als Web-App auf dem Startbildschirm installiert werden kann.
Anmerkung: Diese Funktion ist in einigen Browsern möglicherweise nicht verfügbar.
Alex, was hältst du davon, wenn du dein Wissen mit uns teilst?!Mh ja, mir gings auch grad so wie dir FwDonnerbalken, aber zum Glück kann ich den originalen Beitrag ansehen.![]()
Was gibts da zu philosophierenAlex, was hältst du davon, wenn du dein Wissen mit uns teilst?!
Auch wenn es den Threadstarter nicht mehr interessiert, könnten wir ja zur Not philosophieren![]()
port29 hat gesagt.:Hallo,
ich habe gerade mit einem Arbeitskollegen einen Streit über call by value / call by reference. Ich vertrete die Meinung, dass C# per default call by value durchführt, er sagt, dass es immer call by reference ist.
Ich habe ihm ein paar Links geschickt, die meine Meinung bestätigen, den hier z.B.
Er hat mir dann ein paar (russische) Bücher auf den Tisch geknallt, wo genau das Gegenteil steht. Ich wollte deshalb jetzt genauer nachfragen, was denn jetzt bei einem Methodenaufruf passiert.
Angenommen ich habe jetzt folgenden Code:
Code:MyClass foo= new MyClass();
Mit dem "new" belege ich den Speicher für ein neues Objekt der Klasse MyClass und weise die Adresse meines neuen Objektes der Variable "foo" zu. foo ist ein Pointer auf mein neues Objekt.
Code:bar(foo);
Jetzt kommt der interessante Teil, denn was genau passiert hier?
1) Meine Meinung: Es wird ein neues Objekt der Klasse MyClass erzeugt. Der Speicherbereich des "alten" Objektes wird auf das neue Objekt geschrieben. Die Adresse des neuen Objektes landet in der Methodenvariable.
2) Meinung meines Kollegen: call by value bedeutet in C#, dass der Wert der Variable übergeben wird. Der Wert ist die Adresse. Also wird bei dem Funktionsaufruf nur die Adresse übergeben. Es wird die Referenz auf das Objekt als Wert übergeben.
Was ist nun richtig?
Ich denke, die unterschiedlichen Ansichten rühren daher, das beim Standardfall "call by value" zwar das Objekt selbst , aber nicht die von diesem Objekt referenzierten Objekte kopiert werden. Das ergibt dann wohl sowas wie eine gefühlte Übergabe "call by reference".
Gruß
MCoder
class MyClass
{
public void func_value(Label o)
{
o.Text = "123";
o = null;
}
public void func_ref(ref Label o)
{
o.Text = "123";
o = null;
}
}
...
Label A = new Label();
A.Text = "abc";
MyClass oMyClass = new MyClass();
// In diesem Methodenaufruf wird nur die Eigenschaft "Text" von A geändert
oMyClass.func_value(A);
// Nach diesem Methodenaufruf ist A = null
oMyClass.func_ref(ref A) ;