Kan ikke kalde en funktion [C#]

Herbstein
Level 4 - Newbie
Posts: 48
Joined: 29 Dec 2012, 14:15

Kan ikke kalde en funktion [C#]

Unread post by Herbstein » 17 Apr 2013, 13:15

Hej

Jeg er en N00B, når det gælder programmereing. Jeg har tænkt mig at begynde at lave funktioner, og kan godt finde ud af det i JavaScript. Men når jeg prøver i C#, får jeg bare errors. Det er også, selvom jeg tager kode fra nettet (Tutorials). Kunne en af jer ikke komme med nogle simple eksempler på at kalde/lave en funktion ie.

Code: Select all

gange(num1, num2)
Og så kalde den

Code: Select all

gange(2, 2);

Tak på forhånd

Rasmus

User avatar
Code
Level 39 - Hitman
Posts: 394
Joined: 13 Feb 2013, 14:56
Location: Aalborg
Contact:

Re: Kan ikke kalde en funktion [C#]

Unread post by Code » 17 Apr 2013, 13:24

Herbstein wrote:Hej

Jeg er en N00B, når det gælder programmereing. Jeg har tænkt mig at begynde at lave funktioner, og kan godt finde ud af det i JavaScript. Men når jeg prøver i C#, får jeg bare errors. Det er også, selvom jeg tager kode fra nettet (Tutorials). Kunne en af jer ikke komme med nogle simple eksempler på at kalde/lave en funktion ie.

Code: Select all

gange(num1, num2)
Og så kalde den

Code: Select all

gange(2, 2);

Tak på forhånd

Rasmus
Det er noget tid siden jeg har rodet med at arbejde ren c# hvor det ikke var i Unity, (kan ikke huske om funktioner står anerledes, men burde vist ikke være forskel) hvis man skulle gøre det i Unity:

Code: Select all


float Gange(float a, float b)
{
    return a*b;
}

print(Gange(2,2));

Funktionen her hedder "float" først fordi den returnere en float når man kører den (hvilket er givet ved at return a*b).
Derefter printer man bare det man skal have ganget ved at kører funktionen Gange(tal1, tal2);
I visual studio er det nok Console.print eller lignende.
Spiludvikling og undervisning i Unity3D
http://www.code.dk

Danmarksmesterskabet i spiludvikling.
http://www.dmspil.dk

Herbstein
Level 4 - Newbie
Posts: 48
Joined: 29 Dec 2012, 14:15

Re: Kan ikke kalde en funktion [C#]

Unread post by Herbstein » 17 Apr 2013, 13:33

Hej Code

Svaret ser rigtigt ud, men det giver fem fejl
Kode:

Code: Select all

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

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {            
            float Gange(float a, float b)
            {
                return a*b;
            }

            Print(Gange(2, 2));
        }

    }
}
Fejlene:
1: } expected
2: Method must have a return type
3: Identifier expected
4: Type or namespace definition, or end of file expected
5: 'ConsoleApplication1.Program.Gange(float, float)' is a 'method' but is used as a 'type'

Det undrer mig meget, kan du ikke prøve at teste i Visual express, det bare er mig? Har prøvet at have funktionen-kaldet over og funktion deklerationen

Rasmus

User avatar
mattsson
Level 1 - Speck of dust
Posts: 13
Joined: 11 Apr 2013, 13:11
Location: Copenhagen
Contact:

Re: Kan ikke kalde en funktion [C#]

Unread post by mattsson » 17 Apr 2013, 14:25

Herbstein wrote:Hej Code

Svaret ser rigtigt ud, men det giver fem fejl
Kode:

Code: Select all

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

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {            
            float Gange(float a, float b)
            {
                return a*b;
            }

            Print(Gange(2, 2));
        }

    }
}
Fejlene:
1: } expected
2: Method must have a return type
3: Identifier expected
4: Type or namespace definition, or end of file expected
5: 'ConsoleApplication1.Program.Gange(float, float)' is a 'method' but is used as a 'type'

Det undrer mig meget, kan du ikke prøve at teste i Visual express, det bare er mig? Har prøvet at have funktionen-kaldet over og funktion deklerationen

Rasmus
Du skal deklarere dine metoder uden for Main, dvs.:

Code: Select all

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

namespace ConsoleApplication1
{
    class Program
    {
		static void Main(string[] args)
		{            
			Print(Gange(2, 2));
		}

		float Gange(float a, float b)
		{
			return a*b;
		}
    }
}
Software and web dude at gearworks.dk, blog at marcusm.dk

Herbstein
Level 4 - Newbie
Posts: 48
Joined: 29 Dec 2012, 14:15

Re: Kan ikke kalde en funktion [C#]

Unread post by Herbstein » 17 Apr 2013, 14:36

Så får jeg en fejl der hedder: An object reference is required for the non-static field, method or property 'ConsoleApplication1.Program.Gange(float, float)'

User avatar
mattsson
Level 1 - Speck of dust
Posts: 13
Joined: 11 Apr 2013, 13:11
Location: Copenhagen
Contact:

Re: Kan ikke kalde en funktion [C#]

Unread post by mattsson » 17 Apr 2013, 15:08

Du kan ikke kalde en non-static metode fra en static metode. Du kan enten gøre Gange() static:

Code: Select all

static float Gange(float a, float b)
{
    return a*b;
}
Eller du kan initialisere et objekt af klassen og kalde Gange() derigennem, dvs.

Code: Select all

Program myProgram = new Program();
print(myProgram.Gange(2, 2));
Software and web dude at gearworks.dk, blog at marcusm.dk

Herbstein
Level 4 - Newbie
Posts: 48
Joined: 29 Dec 2012, 14:15

Re: Kan ikke kalde en funktion [C#]

Unread post by Herbstein » 17 Apr 2013, 15:40

mattsson wrote:Du kan ikke kalde en non-static metode fra en static metode. Du kan enten gøre Gange() static:

Code: Select all

static float Gange(float a, float b)
{
    return a*b;
}
Det var det, der var brug for :D

Tak for hjælpen, også til Code.

User avatar
mattsson
Level 1 - Speck of dust
Posts: 13
Joined: 11 Apr 2013, 13:11
Location: Copenhagen
Contact:

Re: Kan ikke kalde en funktion [C#]

Unread post by mattsson » 17 Apr 2013, 15:53

Det var så lidt. ;) http://dotnetperls.com er en rigtig god side, hvis man sidder fast med C#.
Software and web dude at gearworks.dk, blog at marcusm.dk

Post Reply