Premiär! Fyndchans i SweClockers Månadens Drop
Permalänk
Medlem

C# Methods.

Hej, jag har en fråga angående methods i C#. Hur fasiken kan man använda sig utav methods för att ändra värde på enpublic double, int osv? En annan fråga som jag passar på att ta fram samtidigt är, hur kan man använda sig utav en method för att få fram ett random värde? Får alltid massor utav error.

MVH Kai.

Permalänk
Medlem
Skrivet av Kai.H:

Hej, jag har en fråga angående methods i C#. Hur fasiken kan man använda sig utav methods för att ändra värde på enpublic double, int osv? En annan fråga som jag passar på att ta fram samtidigt är, hur kan man använda sig utav en method för att få fram ett random värde? Får alltid massor utav error.

MVH Kai.

Om du vill ändra på en double, int eller andra primitiva datatyper måste du skicka parametern som en ref. Alla primitiva datatyper skickas normalt som värde-typer. D.v.s värdet kopieras in i metoden, vilket gör att ändring av värdet i metoden inte slår igenom utanför metoden. Om du skickar in den som referens värde istället så skicjar du adressen till minnet värdet ligger, när värdet ändras i metoden slår denna ändringen igenom även utanför. Att skicka en primitiv datatyp som referens gör du genom nyckelordet ref.

Vad det gäller din andra fråga får du specificera mer för att jag ska förstå.

Skickades från m.sweclockers.com

Permalänk
Medlem

DinVariabel = DinMetod();

Om jag förstått rätt

Visa signatur

Corsair 750D | i5 4670k | ASUS Z87-a | 8GB Corsair Dominator | Asus GTX770-DC2OC | Samsung 840 EVO 250GB | WD 500GB X2

Permalänk
Medlem

Som natte84 nämnde måste du skicka den som referens, och för att göra detta använder du "ref" framför typen av funktionens parameter samt framför identifieraren i argumentet.

// Exempel på referens int someVariable; static void Main() { someMethod(ref someVariable); } public void SomeMethod(ref int someParameter) { someParameter = X; }

Permalänk
Hedersmedlem
Skrivet av JellyCow:

Som natte84 nämnde måste du skicka den som referens, och för att göra detta använder du "ref" framför typen av funktionens parameter samt framför identifieraren i argumentet.

// Exempel på referens int someVariable; static void Main() { someMethod(ref someVariable); } public void SomeMethod(ref int someParameter) { someVariable = X; }

Du menar väl ändå att ändra på someParameter i metoden?

Permalänk
Medlem
Skrivet av natte84:

Om du vill ändra på en double, int eller andra primitiva datatyper måste du skicka parametern som en ref. Alla primitiva datatyper skickas normalt som värde-typer. D.v.s värdet kopieras in i metoden, vilket gör att ändring av värdet i metoden inte slår igenom utanför metoden. Om du skickar in den som referens värde istället så skicjar du adressen till minnet värdet ligger, när värdet ändras i metoden slår denna ändringen igenom även utanför. Att skicka en primitiv datatyp som referens gör du genom nyckelordet ref.

Vad det gäller din andra fråga får du specificera mer för att jag ska förstå.

Skickades från m.sweclockers.com

Korrekt med ändringen att ref inte är någon adress, det är helt enkelt en referens till samma variabel, ett alias helt enkelt. Du kan till exempel inte tilldela ref till en variabel så det är ingen minnesadress.

Det är väl egentligen oklart vad trådskaparen frågar efter, ref är det ju relativt sällsynt att man använder. Ska värdet beräknas och sedan tilldelas till samma variabel så gör man ju bara det

int someVar = 5;
someVar = SomeMethod(someVar);

och det är oftast inte mer effektivt eller önskvärt att skicka primitiva datatyper per referens.

Angående andra frågan är det väl System.Random som efterfrågas.

Permalänk
Medlem
Skrivet av Shimonu:

Du menar väl ändå att ändra på someParameter i metoden?

Fel av mig!
Självfallet är det someParameter som ska ändras i metoden och inte variabeln.