wiki:JavaCSharp
Last modified 7 years ago Last modified on 2010-12-26 21:03:46

Javasta C#:iin

Johdanto

Java ja C# ovat läheistä sukua keskenään. Jos siis osaat jo Javaa, C#:in opettelu on helppoa.

Työkaluista

Tämä opas neuvoo kädestä pitäen, miten ohjelmoit C#:ia Microsoft Visual Studio 2008:lla. Muitakin vaihtoehtoja C#:in kehitysympäristöksi on ja jos ei tarvitse kehitysympäristön tuomia apuja kuten debuggeria tai syntaksin korostusta, voi C#-koodia tuottaa esimerkiksi Windowsin Notepadilla.

Microsoft Visual Studio 2008:n saat Academic Alliance -palvelusta, jos olet tietotekniikan opiskelija. Avoimen ohjelmakoodin tarjonnasta löytyy ainakin SharpDevelop, joka on perustoiminnoiltaan Visual Studiota vastaava ohjelmisto.

Ensimmäinen kerta

Kuten ohjelmointioppaiden kanssa on jo lähes pakolliseksi tavaksi muodostunut, myöskin tämä opas aloittaa Hello World -esimerkillä. Lähdetään liikkeelle avaamalla Visual Studio 2008 ja valitsemalla valikosta File -> New -> Project.

Avautuvasta ikkunasta valitaan Console Application, koska toistaiseksi keskitymme vain komentoriviohjelmiin. Selvyyden vuoksi projektille on myös hyvä antaa nimi: tässä tapauksessa esimerkiksi kuivasti ja yllätyksettömästi HelloWorld?.

Visual Studio luo pohjalle valmiiksi seuraavan koodin:

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

namespace HelloWorld
{
    class Program
    {
        static void Main(string[] args)
        {
        }
    }
}

Tästä on helppo jatkaa esimerkkimme loppuun lisäämällä yksi rivi:

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

namespace HelloWorld
{
    class Program
    {
        static void Main(string[] args)
        {
		System.Console.WriteLine("Hello World!");
        }
    }
}

Yhdennäköisyys Java-version kanssa on ilmeinen:

public class HelloWorld
{
	public static void main(String[] args)
	{
		System.out.writeln("Hello World!");
	}
}

Hieman tyypillistä Hello Worldia hankalampi tehtävä on kysyä käyttäjältä ensin jonkinlainen arvo ja reagoida tähän vastaukseen. Tehkäämme siis esimerkiksi ohjelma, joka kysyy käyttäjältä hänen nimensä ja ohjelma vastaa: "Hello, [nimi]!"

using System;

namespace HelloWorld
{
    class Program
    {
        static void Main(string[] args)
        {
            System.Console.WriteLine("Hello, what's your name?"); # Tulostetaan kysymys käyttäjälle
            string name = System.Console.ReadLine();              # Luetaan name-nimiseen merkkijonomuuttujaan vastattu rivi
            System.Console.WriteLine("Hello, " + name + "!");     # Tulostetaan "Hello, [nimi]!"
            System.Console.ReadKey();                             # Odotetaan näppäimen painallus
        }
    }
}

Muuttujat

Javalla ja C#.llä perus- eli ns. primitiivimuuttujatyypit ovat lähes identtiset.

JavaC#Kuvaus
booleanboolKaksiarvoinen totuusarvomuuttuja, true/false
charcharUnicode-merkki
bytesbyte8-bittinen kokonaisluku väliltä [-128, 127]
shortshort16-bittinen kokonaisluku väliltä [-32 768, 32 767]
intint32-bittinen kokonaisluku väliltä [-2 147 483 648, 2 147 483 647]
longlong64-bittinen kokonaisluku väliltä [-922 337 203 685 477 508, 922 337 203 685 477 507]
floatfloat32-bittinen desimaaliluku väliltä [-3,402823e38, 3,402823e38]
doubledouble64-bittinen desimaaliluku väliltä [-1,79769313486232e308, 1,79769313486232e308]

Näiden lisäksi C#:sta löytyvät etumerkittömät eli unsigned-tyyppiset versiot Javan bytelle (byte), shortille (ushort), intille (uint) ja longille (ulong). Nämä muuttujat siis alkavat nollasta ja jatkuvat etumerkillisiin sisariinsa verrattuna kaksinkertaisen välin positiiviselle puolelle.

Primitiivimuuttujia monimutkaisemmat muuttujat ovat oliomuuttujia. Näistä kattavat listaukset löytyvät Javan kohdalla http://java.sun.com/j2se/1.5.0/docs/api/ Sunin sivuilta ja C#:n kohdalla http://msdn2.microsoft.com/en-us/library/w0x726c2.aspx Microsoftin MSDN-palvelusta.

Vakiot määritellään Javan puolella final-etuliitteellä, kun taas C#:ssa tämä onnistuu const:lla. Lisäksi C# tarjoaa mahdollisuuden readonly-tyyppiseen muuttujaan, jolle pystytään asettamaan arvo kerran ohjelman suorituksen aikana ja tämän jälkeen kaikki muutokset ovat kiellettyjä.

Attachments