14

Jul

csharp secrets….. ;)

Ciao a tutti

 

Oggi ho pensato: quante cose strane ci sono in c# che quotidianamente nn usiamo?!?!?!

La risposta ovviamente è Smile

 

Compilando a 64bit con .NET 4 ad esempio questo codice:

string s = "Hello World";
Console.WriteLine(s);
Console.ReadLine();

Vedrete un bell’esempio del clasico hello world compilato a 64bit su .net 4 Smile

La sapevate già?!?!  uhm… riprovo….

 

Chi ricorda a cosa serve unchecked?

int max = int.MaxValue;
Console.WriteLine(max);

unchecked
{
    int max1 = max + 1;
    Console.WriteLine(max1);
}

Console.ReadLine();

Eh si, con l’unchecked posso scrivere baggianate bellissime, e il compilatore si comporta proprio bene….. tant’è che il valore non mi serve più a niente xkè è ripartito da capo Smile

E chi si ricorda di unsafe?

unsafe static void Main(string[] args)
{
    int a = 10;
    Console.WriteLine(a);
    Add10(&a);
    Console.WriteLine(a);
    Console.ReadLine();
}

unsafe static void Add10(int* a)
{
    *a = *a * *a;
}

E del numerone chi si ricorda????

static void Main(string[] args)
{
    BigInteger i = new BigInteger(1);
    var _Bits = i.GetType().GetProperty("_Bits", BindingFlags.Instance | BindingFlags.NonPublic);

    for (int c = 0; c < 10; c++)
    {
        i *= long.MaxValue;

        Console.WriteLine("Len: {0}", i.ToString().Length);

        var Bits = (UInt32[])_Bits.GetValue(i, null);
        unchecked
        {
            var ints = Bits.Select(u => (Int32)u).ToArray();
            var a = new BitArray(ints);
            Console.WriteLine("Bits: {0}", a.Length);
        }
    }
   
    //suppongo ke per conservare i valori usi una bitmas
    Console.ReadLine();
}

Potrei aver convertito male i bit da UInt a Int, ma la precisione non cambia, quindi, se lanciamo questo codice, vedremo che il BigInteger (System.Numerics) ad ogni ciclo diventerà più grande, al 10° diventerà esattamente quanto 10 long: 640bit

Sfortunatamente csharp non supporta numeri decimali a precisione arbitraria….

 

A presto con altre idee balzane su .net

Anto

by Antonio Esposito on 7/14/2011