beginners vraag c#

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Hallo allemaal,

ik heb even een stomme beginnersvraag met c#. Ik ben er net mee begonnen dus let niet op de eenvoud van de code :p

Ik heb de volgende code:

C#:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication1
{
    class Program
    {

        public class collega
        {
            public string sNaam;
            public int nLeeftijd;
        }

        static void Main(string[] args)
        {

            Console.WriteLine("Hoeveel collega's heb je :");
            string sAantal = Console.ReadLine();
            int nAantal = Convert.ToInt32(sAantal);

            collega[] collegas = new collega[nAantal];

            for (int i = 0; i < nAantal; i++)
            {
                Console.WriteLine("Wat is de naam van collega " + (i + 0) + " :");
                string sNaam = Console.ReadLine();

                Console.WriteLine("Wat is de leeftijd van " + sNaam + " :");
                string sLeeftijd = Console.ReadLine();
                int nLeeftijd = Convert.ToInt32(sLeeftijd);

                collega DezeCollega = new collega();

                DezeCollega.sNaam = sNaam;
                DezeCollega.nLeeftijd = nLeeftijd;

                collega[i] = DezeCollega;
            }
        }

    }

}


Ik krijg over de regel: collega[i] = DezeCollega; de volgende foutmelding:
Error 1 'ConsoleApplication1.Program.collega' is a 'type' but is used like a 'variable'

Hoe krijg ik deze melding weg?

Bij voorbaat dank :)

[ Voor 0% gewijzigd door RobIII op 03-10-2011 22:46 . Reden: Code tags toegevoegd. ]


Acties:
  • 0 Henk 'm!

  • YopY
  • Registratie: September 2003
  • Laatst online: 13-07 01:14
Door je collega-variabele (die dezelfde naam heeft als je class collega) te hernoemen. Ook is het vaak normaal om classnamen met een hoofdletter te laten beginnen, en variabelen (zoals DezeCollega) met een kleine letter.

Ten tweede, je kunt je code netjes (laten) formatteren door de [code=c#]-bbcode te gebruiken.

Acties:
  • 0 Henk 'm!

  • ValHallASW
  • Registratie: Februari 2003
  • Niet online
Beginnen met goed lezen: 'ConsoleApplication1.Program.collega' is a 'type' but is used like a 'variable'. Op je regel staat
code:
1
collega[i] = DezeCollega

maar collega is een type (nl. de naam van de klasse die je net hebt gemaakt). Je array heeft een andere naam!
YopY schreef op maandag 03 oktober 2011 @ 21:33:
Door je collega-variabele (die dezelfde naam heeft als je class collega) te hernoemen.
Ook jij moet beter lezen ;-) Het is een array van type collega[], maar hij heet geen collega ;-)

Acties:
  • 0 Henk 'm!

  • KoW
  • Registratie: Juli 2001
  • Laatst online: 17-08-2022

KoW

Parse parsed te veel

Hehe, inderdaad.

Je mist een s :)

Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Volgende keer als je code post, gebruik dan code tags wil je? Verder zou je dit prima moeten kunnen oplossen door gewoon überhaupt eens te kijken over welk regelnummer VS klaagt en dan eens wat verder dan je neus te kijken ;)

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Bedankt voor de reacties, was achteraf inderdaad erg simpel gewoon die s erachter...
Begin net en dan is het best lastig om erachter te komen (ook met google erbij :P)

In ieder geval bedankt en volgende keer zal ik de code tags goed gebruiken :)

Acties:
  • 0 Henk 'm!

  • Wijnbo
  • Registratie: December 2002
  • Laatst online: 06-09 20:35

Wijnbo

Electronica werkt op rook.

Tips voor TS:

Let op je naamgeving.
Voorkomt veel van zulke problemen :-)

Dus :
C#:
1
2
3
4
5
Class Pietje
{
    private string _pietje 
    public string EenMooieString {get;set;}
}


Verder zou ik ook niet met prefixes om aan te geven wat voor type iets is, aangezien een fatsoenlijke IDE dit zelf wel aangeeft.

En nog een tip: Wen je vanaf het begin aan om alles in het engels te doen, ook voor eigen testprojectjes die toch nooit iemand te zien krijgt.

Succes met programmeren!


Toch even niets te doen :
C#:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication1
{
    class Program
    {

        public class Colleague
        {
            public string Name { get; set; }
            public int Age { get; set; }
        }

        static void Main(string[] args)
        {
            Console.WriteLine("Hoeveel collega's heb je :");
            int amount = Convert.ToInt32(Console.ReadLine());
            Colleague[] colleagues = new Colleague[amount];

            for (int i = 0; i < amount; i++)
            {
                Console.WriteLine("Wat is de naam van collega " + (i + 0) + " :");
                string name = Console.ReadLine();
                Console.WriteLine("Wat is de leeftijd van " + name + " :");
                int age= Convert.ToInt32(Console.ReadLine());
                Colleague newColleague = new Colleague();
                newColleague.Name = name;
                newColleague.Age = age;
                colleagues[i] = newColleague;
            }
        }
    }
}


Zelfde code, alleen dan met de naamgeving/hoofdlettergebruik wat redelijk algemeen is. Hier en daar zie je soms wat verschillen, maar als je zoiets als dit doet zit je redelijk goed.

Zie je code er gelijk een stuk professioneler uit mochten anderen het ooit onder ogen krijgen. En als je werkt in .NET 3.5 of hoger kun je "var " gebruiken en vereenvoudigd properties zetten bij het constructen van een object:

C#:
1
var newColleague = new Colleague {Name = name, Age = age};

[ Voor 86% gewijzigd door Wijnbo op 04-10-2011 08:39 ]


Acties:
  • 0 Henk 'm!

  • dj_vibri
  • Registratie: Oktober 2007
  • Laatst online: 16-09 17:16

dj_vibri

int(e^x) = f(u)^n

Wijnbo schreef op dinsdag 04 oktober 2011 @ 08:28:
Tips voor TS:

Let op je naamgeving.
Voorkomt veel van zulke problemen :-)


Verder zou ik ook niet met prefixes om aan te geven wat voor type iets is, aangezien een fatsoenlijke IDE dit zelf wel aangeeft.
Wat betreft de prefixes, buiten het feit dat er steeds weer discussie's over ontstaan O-) , kan het altijd zijn dat de TS dit momenteel in school/les aan het leren is. Zelfs in "mijn tijd" werden we verplicht van nog te werken met " txtVoornaam", "cmdSave", ... etc....

Toegegeven: ééns je van school bent en je gaat werken leren ze je dat wel snel af _/-\o_

Last night I lay in bed looking up at the stars in the sky and I thought to myself, where the heck is the ceiling.


Acties:
  • 0 Henk 'm!

  • Caelorum
  • Registratie: April 2005
  • Laatst online: 00:29
Hungarian notatiln op de goede manier gedaan is helemaal niet slecht en kan zeker wat aan de leesbaarheid van de code toevoegen. Waar je alleen voor moet opletten is dat je niet namen gaat maken als 'sNaam' of 'int32Leeftijd', maar namen gebruikt die beschrijven wat iets is niet hoe iets is.

Acties:
  • 0 Henk 'm!

  • Cyphax
  • Registratie: November 2000
  • Laatst online: 22:45

Cyphax

Moderator LNX
dj_vibri schreef op dinsdag 04 oktober 2011 @ 08:48:
[...]


Wat betreft de prefixes, buiten het feit dat er steeds weer discussie's over ontstaan O-) , kan het altijd zijn dat de TS dit momenteel in school/les aan het leren is. Zelfs in "mijn tijd" werden we verplicht van nog te werken met " txtVoornaam", "cmdSave", ... etc....

Toegegeven: ééns je van school bent en je gaat werken leren ze je dat wel snel af _/-\o_
Oh, in dat geval: Wikipedia: Hungarian notation: Systems vs. Apps Hungarian
Kan je het maar het beste gelijk even weten, 't stelt geen zak voor namelijk.

Saved by the buoyancy of citrus


Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
^ Dat, maar lees ook meteen Making Wrong Code Look Wrong even :Y)

[ Voor 12% gewijzigd door RobIII op 04-10-2011 09:22 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

  • Cyphax
  • Registratie: November 2000
  • Laatst online: 22:45

Cyphax

Moderator LNX
Dat is helemaal een goed idee. Good ol' Spolsky. :)

Saved by the buoyancy of citrus


Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Cyphax schreef op dinsdag 04 oktober 2011 @ 09:41:
Dat is helemaal een goed idee. Good ol' Spolsky. :)
offtopic:
Nou ja, Spolsky is niet heilig, maar hij zegt schrijft wel eens slimme dingen :P Wanneer in twijfel: eerst naar RobIII luisteren, dan naar Spolsky :+

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

  • Wijnbo
  • Registratie: December 2002
  • Laatst online: 06-09 20:35

Wijnbo

Electronica werkt op rook.

dj_vibri schreef op dinsdag 04 oktober 2011 @ 08:48:
[...]


Wat betreft de prefixes, buiten het feit dat er steeds weer discussie's over ontstaan O-) , kan het altijd zijn dat de TS dit momenteel in school/les aan het leren is. Zelfs in "mijn tijd" werden we verplicht van nog te werken met " txtVoornaam", "cmdSave", ... etc....

Toegegeven: ééns je van school bent en je gaat werken leren ze je dat wel snel af _/-\o_
Daar ben ik het dan weer niet mee eens, ui elementen moet je vind ik juist weer WEL te prefixen... Zeker als je vaak een label hebt en dan een textbox er bij ofzo.

Acties:
  • 0 Henk 'm!

  • Guillome
  • Registratie: Januari 2001
  • Niet online

Guillome

test

Dit ging toch over variabelen en properties, en niet over elementen/IDs van ui-elementen

If then else matters! - I5 12600KF, Asus Tuf GT501, Asus Tuf OC 3080, Asus Tuf Gaming H670 Pro, 48GB, Corsair RM850X PSU, SN850 1TB, Arctic Liquid Freezer 280, ASUS RT-AX1800U router


Acties:
  • 0 Henk 'm!

  • Caelorum
  • Registratie: April 2005
  • Laatst online: 00:29
Ui elementen zijn toch ook gewoon objecten waar variabelen naar kunnen verwijzen?

Acties:
  • 0 Henk 'm!

  • Guillome
  • Registratie: Januari 2001
  • Niet online

Guillome

test

Jep en zo`n object heeft niet als property sName, dat is gewoon object.name
Dat je de waarde daarvan nou lblUserName maakt heeft volgens mij niets hiermee te maken

If then else matters! - I5 12600KF, Asus Tuf GT501, Asus Tuf OC 3080, Asus Tuf Gaming H670 Pro, 48GB, Corsair RM850X PSU, SN850 1TB, Arctic Liquid Freezer 280, ASUS RT-AX1800U router


Acties:
  • 0 Henk 'm!

  • Caelorum
  • Registratie: April 2005
  • Laatst online: 00:29
Guillome schreef op dinsdag 04 oktober 2011 @ 16:14:
Jep en zo`n object heeft niet als property sName, dat is gewoon object.name
Dat je de waarde daarvan nou lblUserName maakt heeft volgens mij niets hiermee te maken
Het ging dan ook om het volgende:
C#:
1
var admbtnCancel = new Button(); //Admin Button

Om even een extreem slecht voorbeeld te geven.
Dit ging toch over variabelen en properties, en niet over elementen/IDs van ui-elementen
Een variabele kan net zo goed verwijzen naar een ui-element en de naam van die variabele kan dus zoals in het brakke voorbeeld hierboven genaamd zijn.

Of begrijp ik Wijnbo nou verkeerd?

[ Voor 3% gewijzigd door Caelorum op 04-10-2011 16:38 ]


Acties:
  • 0 Henk 'm!

  • Wijnbo
  • Registratie: December 2002
  • Laatst online: 06-09 20:35

Wijnbo

Electronica werkt op rook.

Caelorum schreef op dinsdag 04 oktober 2011 @ 16:38:
[...]

Het ging dan ook om het volgende:
C#:
1
var admbtnCancel = new Button(); //Admin Button

Om even een extreem slecht voorbeeld te geven.

[...]

Een variabele kan net zo goed verwijzen naar een ui-element en de naam van die variabele kan dus zoals in het brakke voorbeeld hierboven genaamd zijn.

Of begrijp ik Wijnbo nou verkeerd?
Eh, geen idee :+

Maar wat ik over het algemeen zie (en zelf ook gebruik):

C#:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
int day;
double amount ;
string userName;

//Maar:

RequiredFieldValidator rfvNameRequired;
Button btnSave;
TextBox tbUserName

//Maar ook:
Banana banana;
SomeInstanceOfHelperClass helper
List<Banana>  bananas;

Acties:
  • 0 Henk 'm!

  • Woy
  • Registratie: April 2000
  • Niet online

Woy

Moderator Devschuur®
voor UI elementen gebruik ik inderdaad ook altijd prefixes met het type, maar dat heeft een heel andere reden dan "normale" hungarian notation. Ten eerste voorkom je er naming collisions mee ( lblName, txtName ), ten tweede is het IMHO makkelijker in het gebruik, omdat je meestal toch op zoek bent naar een bepaald type element. Als je bijvoorbeeld een textbox wil hebben begin je met "txt" typen en heb je meteen een overzicht van alle textboxen.

Ik moet wel zeggen dat ik het sinds WPF eigenlijk niet meer doe, maar dat komt omdat je daar toch op een heel andere manier met een UI omgaat, en meestal niet zo direct in code met je UI elementen aan het werk bent. ( En je vaak niet eens een naam aan een UI element hoeft te geven )

[ Voor 4% gewijzigd door Woy op 05-10-2011 09:04 ]

“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”

Pagina: 1