Avatar billede baitianlong Nybegynder
12. december 2004 - 21:03 Der er 18 kommentarer og
2 løsninger

I gang med C# (fra Java)

Hej. Jeg vil til at prøve noget C#, da jeg kan se i jobannoncerne at det er en vinder. Jeg er datamatiker, og kan således kode rimeligt godt i Java. Jeg har hørt at der ikke er så langt fra Java til C#.

Jeg har Visual Studio .NET og vil så prøve noget der.

Skrive en simpel Klasse (f.eks Person) og en testklasse, der opretter en instans af Person med et navn, og så skriver f.eks personens alder.

I Java ville det jo være noget hen ad:

public class Person {
    private int alder;
    private string navn;
    public Person(string navn, int alder) {
        this.navn = navn;
        this.alder = alder;
    }
    public int getAlder() {
        return alder;
    }
}
--------
public class test{
    public static void main(string[] args) {
        Person p = new Person("Hans", 15);
        System.out.println(p.getAlder());
    }
}

Hvordan ser sådan noget ud i C#
Avatar billede burningice Nybegynder
12. december 2004 - 21:06 #1
public class Person {
    private int alder;
    private string navn;
    public Person(string navn, int alder) {
        this.navn = navn;
        this.alder = alder;
    }
    public int Alder {
        get {
            return alder;
        }
    }
}
--------
public class test{
    public static void Main(string[] args) {
        Person p = new Person("Hans", 15);
        Console.WriteLine(p.Alder);
    }
}
Avatar billede baitianlong Nybegynder
12. december 2004 - 21:08 #2
hva fa'n. Det er jo 99% det samme
Avatar billede arne_v Ekspert
12. december 2004 - 21:10 #3
C# ligner java ret meget.

Eksempel:

using System;
using System.Collections;

class MainClass
{
        public static void Main(string[] args)
        {
                Customer c1 = new Customer(1, "Kunde 1");
                Console.WriteLine(c1.No + " " + c1.Name);
                Console.WriteLine(c1);
                CustomerList clist = new CustomerList();
                clist.Add(c1);
                Customer c2 = new Customer(2, "Kunde 2");
                clist.Add(c2);
                Console.WriteLine(clist.Get(2));
                Console.WriteLine(clist[2]);
        }
}

class CustomerList
{
        private Hashtable list;
        public CustomerList()
        {
                list = new Hashtable();
        }
        public void Add(Customer c)
        {
                list.Add(c.No, c);
        }
        public Customer Get(int no)
        {
                return (Customer)list[no];
        }
        public Customer this[int no]
        {
                get
                {
                        return (Customer)list[no];
                }
        }
}

class Customer
{
        private int no;
        private string name;
        public Customer(int no, string name)
        {
                this.no = no;
                this.name = name;
        }
        public int No {
                get
                {
                        return no;
                }
        }
        public string Name {
                get
                {
                        return name;
                }
        }
        public override string ToString()
        {
                return (no + " " + name);
        }
}
Avatar billede arne_v Ekspert
12. december 2004 - 21:14 #4
Du bruger properties i.s.f. get og set metoder.

Metode navne starter med stort bogstav i.s.f. med lille bogstav.

(der er selvfølgelig en million andre forskelle, men i den slags
data opbevarings klasser er det det mest iøjnefaldende)
Avatar billede baitianlong Nybegynder
12. december 2004 - 21:18 #5
Hvad så hvis vi også vil kunne sætte alder:
Avatar billede arne_v Ekspert
12. december 2004 - 21:19 #6
public int Alder {
        get {
            return alder;
        }
        set {
            alder = value;
        }
    }
Avatar billede arne_v Ekspert
12. december 2004 - 21:23 #7
Der er iøvrigt stadig flere Java jobs end C# jobs.

Men størstedelen af Java jobs er indenfor J2EE.

Der er ikke meget efterspørgsel efter Java programmer på client side.
Avatar billede arne_v Ekspert
12. december 2004 - 21:49 #8
Muligvis kan du have fornøjelse af:
  http://www.soften.ktu.lt/~mockus/gmcsharp/csharp/c-sharp-vs-java.html

(den er ikke helt uptodate, men den er ret grundig)
Avatar billede baitianlong Nybegynder
12. december 2004 - 21:58 #9
Jeg skulle lige til at presse citronen med persistens, der jo i Java kan fikses med få linier, men jeg kan se dit link indeholder den info jeg skal bruge for at komme videre... Hvordan kan det være Sun ikke har sagsøgt Microsoft for plagiat? :P

Tak for info, og dit fine lille eksempel på en container klasse også. Smid begge to et svar :)
Avatar billede arne_v Ekspert
12. december 2004 - 22:02 #10
svar
Avatar billede burningice Nybegynder
12. december 2004 - 22:04 #11
svar

tja... hvem skulle sagsøge hvem for hvad? Sprog ligner meget hinanden, men de udvikler sig. C# er et skridt fremad, og at syntaksen ligner må enten betyde at det er en solid syntakt, eller også har Microsoft været snedige og sørget for at indlæringskurven for tidligere Java-programmører skulle være så flad som mulig ;)
Avatar billede baitianlong Nybegynder
12. december 2004 - 22:08 #12
Ja, det er jo nok netop det.. MS vil snuppe "kunderne" fra SUN, og har fordelen at .exe filen er "federe" end .class filen. Altså slemme Bill :)

(cyberfessor, dit svar er en kommentar!)
Avatar billede baitianlong Nybegynder
12. december 2004 - 22:14 #13
I min mappe med projektet har jeg nu en exe fil, men når jeg kører den, havde jeg egentlig forventet et konsolvindue, men det kommer ikke. Den har heller ikke fået den smukke ikon, jeg havde tegnet. Er det noget i lige gider kommentere :)
Avatar billede arne_v Ekspert
12. december 2004 - 22:16 #14
Har du lavet en console app eller en windows app ?
Avatar billede burningice Nybegynder
12. december 2004 - 22:17 #15
arg... jeg efterlyser stadigvæk en funktion der tjekker på den første linje i ens kommentar... hvis det er svar, så skal kommentaren automatisk blive til svar :P

husk at lave en Console.ReadLine(); til sidst i din Main-funktion. Ellers vil vinduet lukke sig selv ned igen rimelig hurtigt
Avatar billede baitianlong Nybegynder
12. december 2004 - 22:41 #16
Ja, det er nok fordi jeg valgte windows app, der var også en form. Men den fjernede jeg bare. I projektet er der Mine to klasser og en AssemblyInfo.cs og App.ico
Avatar billede arne_v Ekspert
12. december 2004 - 22:45 #17
Jeg tror at det er bedst hvis valg af wizard og faktisk app matcher - ellers skal
du ind og ændred en halv snes options.
Avatar billede baitianlong Nybegynder
12. december 2004 - 22:46 #18
Ja, når jeg laver det til en konsol app i stedet for, går det lidt bedre. Men hvad med ikonet?
Avatar billede arne_v Ekspert
12. december 2004 - 22:52 #19
pas
Avatar billede baitianlong Nybegynder
12. december 2004 - 22:52 #20
Anyway. Tak for jeres svar og hjælp. Hvis i gider skrive hvad der går galt med ikonet, er det smukt. Men det er naturligvis ikke det vigtigste i verden på nuværende tidspunkt. Jeg synes bare det var sjovt, da jeg opdagede det :)
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
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

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