Avatar billede friiiiis Novice
11. august 2014 - 11:50 Der er 10 kommentarer og
1 løsning

vedr Class

Hej,

Jeg har 2 Class

    public class ADONETConnection
    public partial class Form1 : Form

    I public class ADONETConnection er der en procedure:

    public void fnGetConnection()

Hvordan kalder jeg den fra Klassen "Form1" ??

ADONETConnection.fnGetConnection(); - virker ikke
fnGetConnection(); - virker ikke

??
Avatar billede januskh Nybegynder
11. august 2014 - 11:57 #1
Noget I retningen:

ADONETConnection con = new ADONETConnection();
con.fnGetConnection();


Eller du kan gøre den shared - så skal du ikke instanciere class først.

public shared void fnGetConnection()

Min syntax er nok ikke rigtig, da jeg ikke er vandt til C#. (Men VB)
Avatar billede lasserasch Juniormester
11. august 2014 - 12:16 #2
Der findes ikke noget som hedder 'public shared' klassenavn.


1. Hvis du skal kalde metoder i en klasse skal du først have en instans af klassen. Dette gør du ved at skrive "var paramnavn = new klasseduvilinstansiere();"

Evt. med nogle parametre i constructoren hvis den skal have det.

F.eks. : var con = new ADONETConnection();

Herefter kan du kalde public metoder på den klasse.

Note her er at bruge var i stedet for ADONETConnection. Der er ingen grund til at skrive mere kode end højest nødvendigt.


2. Hvis du vil kalde metoder på en klasse uden at have en instans af den, så skal metoden være static. (Der som hedder shared i VB.Net).

Der er både fordele og ulemper ved det. Husk på at hvis en metode er static, så bruger alle som kalder den, samme tråd. Så du bør læse op på det inden du begir dig ud i den verden.


Og kan du så lige se at få 'fnGetConnection' skrevet med små bogstaver. Metodenavne bør være lower case, variabler camelcasing.

Mvh.
Lasse
Avatar billede arne_v Ekspert
11. august 2014 - 14:06 #3
"Husk på at hvis en metode er static, så bruger alle som kalder den, samme tråd"

host host

"Og kan du så lige se at få 'fnGetConnection' skrevet med små bogstaver. Metodenavne bør være lower case,"

host host
Avatar billede arne_v Ekspert
12. august 2014 - 02:04 #4
Naa Lasse heoerte vist ikke mine host.

En static metode er der ikke i sig selv problemer med. Men en static metode kan ikke tilgaa non-static fields og der kan vaere problemer med static fields. Medmindre man koder bevidst for at undgaa problemer saa vil flere traade som tilgaar samme static field kunne give en masse grimme fejl. Det kan flere traade som tilgaar samme non-static field i samme instans af klasse ogsaa, men hvis man har en instans af klassen per traad saa undgaar man det. Og det er ret almindeligt.

Metoder skal ifoelge MS bruge Pascal Case. Og man skal ikke bruge ungarsk notation.

http://msdn.microsoft.com/en-us/library/vstudio/ms229043.aspx

http://msdn.microsoft.com/en-us/library/vstudio/ms229045.aspx

Saa det "rigtige navn" er GetConnection.
Avatar billede arne_v Ekspert
12. august 2014 - 02:37 #5
Jeg er ioevrigt ogsaa uenig i:

"Note her er at bruge var i stedet for ADONETConnection. Der er ingen grund til at skrive mere kode end højest nødvendigt."

Det drejer sig om at goere kode letlaeselig ikke om at spare paa ental tasteslag.

Eller for at citere dokumentationen:

http://msdn.microsoft.com/en-us/library/bb384061.aspx

"However, the use of var does have at least the potential to make your code more difficult to understand for other developers. For that reason, the C# documentation generally uses var only when it is required."

Og brug af var er kun noedvendigt for typer uden navn.

Og det er hvad jeg bruger var til.

Men andre bruger var i langt flere tilfaelde.
Avatar billede lasserasch Juniormester
12. august 2014 - 13:02 #6
Du skal da vist en tur på apoteket efter noget til den hoste arne :-)

Jeg bøjer mig. Arne har selvfølgelig ret.

Ift. static metode kald, så mener vi det samme, men min kommentar var skrevet med lidt omvendte og deraf forkerte vendinger.

Jeg bruger stadig var meget mere end det som arne skriver. Det er måske et holdsningsspørgsmål. Jeg synes det gør koden mere læselig og nemmere at rette til.

Mvh.
Lasse
Avatar billede friiiiis Novice
15. august 2014 - 13:32 #7
Vil personer der mener de har givet et svar sende et svar ind så jeg kan få givet point?
Avatar billede lasserasch Juniormester
15. august 2014 - 13:43 #8
Jeg melder pas på points herfra. Når alligevel aldrig arnes rekord.... :-)
Avatar billede arne_v Ekspert
17. august 2014 - 04:34 #9
Jeg har ikke svaret paa spoergsmaalt kun kommenteret paa en anden kommentar.
Avatar billede friiiiis Novice
18. august 2014 - 09:17 #10
lasserasch og arne_v har meldt pas så

januskh - smid et svar ;-)
Avatar billede friiiiis Novice
06. oktober 2014 - 14:55 #11
ingen der smid er svar - så tager jeg point ;-)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester