convert
Børre Stenseth
C#>Typekonvertering

Typekonvertering

Hva
Konvertering av typer

C# er et språk med et sterkt typebegrep. Av og til har vi behov for å konvertere en type til en annen. Typisk fra og til ulike numeriske typer til text.

Klassen Convert har en rekke statiske metoder for konvertering. Noen eksempler:

String T="123";
int tall = Convert.ToInt16(T);
String S= Convert.ToString(tall);

Dersom vi forsøker å konvertere en string som ikke kan konverteres på en fornuftig måte får vi en exception:

String T = "hallo";
try
{
    int tall = Convert.ToInt16(T);
    // and do something with the number
}
catch (Exception ex)
{
    errormessage = ex.Message;
}

Vil gi errormessage: "Input string was not in a correct format."

Formatering av datoer er en stadig tilbakevendende problemstilling. Vi kan handtere datoer med klassen DateTime. Dato og tid akkurat nå finner vi ved:

DateTime d=DateTime.now;

Vi kan plukke opp deler av denne datoen og formattere dem på mange måter. Dette er bare noen av dem: (avhengug av dato)

DateTime d=DateTime.now;
String T = Convert.ToString(d);

gir T: "21.12.2006 17:34:22"

String T = String.Format("{0}-{1}-{2}", d.Year, d.Month, d.Day);

gir T: "2006-12-21"

String T = = String.Format("{0:u}", d).Substring(0,10);

gir T: "2006-12-21"

Følgende program :

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

using System.Globalization;
using System.Threading;

namespace culture
{
    class Program
    {
        static void Main(string[] args)
        {
            DateTime today = DateTime.Now;
            show = String.Format("{0}:{1}:{2}", today.Year, 
                                                today.Month.ToString("00"), 
                                                today.Day.ToString("00"));
            Console.WriteLine(show);

            show = today.ToLongDateString();
            Console.WriteLine(Thread.CurrentThread.CurrentCulture.NativeName + 
			                  ":\t" + show);

            Thread.CurrentThread.CurrentCulture = CultureInfo.GetCultureInfo("it-IT");
            show = today.ToLongDateString();
            Console.WriteLine(Thread.CurrentThread.CurrentCulture.NativeName + 
			                  ":\t" + show);

            Thread.CurrentThread.CurrentCulture = CultureInfo.GetCultureInfo("en-US");
            show = today.ToLongDateString();
            Console.WriteLine(Thread.CurrentThread.CurrentCulture.NativeName + 
			                  ":\t" + show);         

            Console.Read();
        }
    }
}

gir følgende output (avhengug av dato)

2010:01:25
norsk, bokmål (Norge): 25.januar 2010
italiano (Italia):     lunedi 25 gennaio 2010
English (United States):       Monday, January 25, 2010
Referanser
Du kan eksperimentere med dette og noen andre temaer i programmet:
https://svn.hiof.no/svn/psource/Csharpspikes/language/summary
Vedlikehold

B.Stenseth, revidert januar 2010

(Velkommen) C#>Typekonvertering (Collections)