Minifeladatok I.

Egy-két hónapja elkezdtem készíteni egy “edzéstervet” fiatalabb kollegáim számára, amivel C# ismereteket lehet elmélyíteni trükkös feladatokon keresztül. Közben az erre allokálható szabadidőm jelentősen lecsökkent, így a folyamat abbamaradt. Hogy az eddigi 8-9 feladat ne vesszen kárba, kiszórom őket ide, hátha valakit szórakoztat, vagy tanul belőle.

A feladatok leírása után pár napon belül megadom a válaszokat magyarázattal, de addig nyugodtan lehet kommentelni. Aki azonban jót akar a többieknek, meghagyja a lehetőséget a lassú kivérzésre, és nem mondja meg a megoldást.

Az első feladat

Mit ír ki az alábbi program, és miért? Milyen tervezési hiba miatt fordulhat ez elő? Milyen alapelvek betartásával lehet elkerülni?

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

struct SuperValue 
{
    public int Value { get; set; }

    public void Increment()
    {
        this.Value++;
    } // Increment
} // struct SuperValue

class Program
{
    static void Main(string[] args)
    {
        var values = new List<SuperValue>();

        for (var i = 0; i < 100; i++)
        {
            values.Add(new SuperValue());
        } // for i

        for (var i = 0; i < values.Count; i++)
        {
            values[i].Increment();
        } // for i

        var sum = values.Sum(v => v.Value);

        Console.WriteLine(sum);
    } // Main()
} // class Program

A feladat megoldása megtalálható itt

  1. #1 by blac on 2012. March 7. - 09:28

    Nagyon várom a továbbiakat is! Engem érdekel.

  2. #2 by László on 2012. March 10. - 10:42

    Remélem lehet már megfejtésre szabad a gazdát kérni! Addig jutottam el, hogy a struktúra valamiért még az Increment-elt értékeket sem őrzi meg! Nem is tudom mire gyanakszom, de a LINQ sem működik, konkrétan nagy zéró jön ki belőle.

  3. #3 by László on 2012. March 10. - 10:43

    Ja, és jöhet a következő!😉

  4. #4 by László on 2012. March 10. - 11:53

    Hú, azt hiszem rájöttem! Value = property, Set, ++ nem érvényes?

  5. #5 by Anonymous on 2012. March 10. - 14:59

    Ökölszabály: mutable value types are evil.

  1. Megoldás – Minifeladatok I. - pro C# tology - devPortal

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: