Minifeladatok II.

Ez a feladat szintén az érték típusokról szól. Bár a feladatban a SuperValue nem Immutable, most nem ez okoz problémát. A kérdések tehát:

  • Mit ír ki a program?
  • Miért?
  • Hogy lehetne átírni csak a “var value = new SuperValue();” sort, hogy a kívánt eredményt kapjuk?
using System;

interface IIncrementable
{
    void Increment();
} // interface IIncrementable

// Kamu algoritmus "gyűjtemény", ami IIncrementable adatokon
// működik
static class AlgorithmSuite
{
    static public void DoThatCalculation(IIncrementable data)
    {
        // Step 1
        data.Increment();
        Console.WriteLine("Result after step 1 is {0}", data.ToString());

        DoFurtherCalculation(data);
        Console.WriteLine("Result after step 2 is {0}", data.ToString());
    } // DoThatCalculation()

    static private void DoFurtherCalculation(IIncrementable data)
    {
        // Step 2
        data.Increment();
    } // DoFurtherCalculation()
} // class AlgorithmSuite

// Egy típus, amit a számításokban használni akarok
struct SuperValue : IIncrementable
{
    public int Value { get; set; }

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

    public override string ToString()
    {
        return this.Value.ToString();
    } // ToString()
} // struct SuperValue

class Program
{
    static void Main(string[] args)
    {
        var value = new SuperValue();

        AlgorithmSuite.DoThatCalculation(value);

        Console.WriteLine("Result is {0}", value);
    } // Main()
} // class Program
  1. #1 by Laczkó József on 2012. March 13. - 10:57

    IIncrementable value = new SuperValue();

    Szerintem a boxing miatt működik a nem várt módon.

    • #2 by Tóth Viktor on 2012. March 13. - 11:05

      Pontosan🙂 Mondjuk elrontottam a feladatot, mert a második kiírást nem a DoFurtherCalculation()-ba kellett volna tenni, hanem ahol most van (javítottam)

  1. Megoldás – Minifeladatok II. - 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: