SORU
8 EKİM 2009, PERŞEMBE


Nasıl İşlev< kullanıyorsunuz;> ve hareket<&uygulamalar tasarlarken gt;?

Tüm örnekler İşlev<^ bul hakkında edebilirim . ve Eylem<>basitgördüğünüz aşağıdaki gibinasılonlar teknik bir iş ama istiyorum onları görmek için kullanılan örnekler nerede onlar sorunları çözmek, daha önce değil, çözülmüş veya olabilir çözüldü sadece daha karmaşık bir şekilde, yani biliyorum nasıl çalıştıklarını ve görüyorumkısa ve güçlübir . onları anlamak istiyorum , bu yüzden ben ^strong>daha geniş anlamdane tür sorunlar onlar tasarım uygulamaları onları kullanabilirim nasıl çözmek ve.

Ne yolları (desen) İşlev<^ kullanıyorsunuz . ve Eylem<>gerçek sorunları çözmek için?

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

namespace TestFunc8282
{
    class Program
    {
        static void Main(string[] args)
        {
            //func with delegate
            Func<string, string> convert = delegate(string s)
            {
                return s.ToUpper();
            };

            //func with lambda
            Func<string, string> convert2 = s => s.Substring(3, 10);

            //action
            Action<int,string> recordIt = (i,title) =>
                {
                    Console.WriteLine("--- {0}:",title);
                    Console.WriteLine("Adding five to {0}:", i);
                    Console.WriteLine(i   5);
                };

            Console.WriteLine(convert("This is the first test."));
            Console.WriteLine(convert2("This is the second test."));
            recordIt(5, "First one");
            recordIt(3, "Second one");

            Console.ReadLine();

        }
    }
}

CEVAP
8 EKİM 2009, PERŞEMBE


Ayrıca yeniden düzenleme geçiş açıklamaları için çok kullanışlılar.

(Basit de olsa) aşağıdaki örnek alalım:

public void Move(int distance, Direction direction)
{
    switch (direction)
    {
        case Direction.Up :
            Position.Y  = distance;
            break;
        case Direction.Down:
            Position.Y -= distance;
            break;
        case Direction.Left:
            Position.X -= distance;
            break;
        case Direction.Right:
            Position.X  = distance;
            break;
    }
}

Bir Eylem temsilci olarak yeniden Düzenle

static Something()
{
    _directionMap = new Dictionary<Direction, Action<Position, int>>
    {
        { Direction.Up,    (position, distance) => position.Y  =  distance },
        { Direction.Down,  (position, distance) => position.Y -=  distance },
        { Direction.Left,  (position, distance) => position.X -=  distance },
        { Direction.Right, (position, distance) => position.X  =  distance },
    };
}

public void Move(int distance, Direction direction)
{
    _directionMap[direction](this.Position, distance);
}

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Gali B

    Gali B

    1 EYLÜL 2006
  • Helen Bradley

    Helen Bradle

    4 Mart 2008
  • TeeMayneTV

    TeeMayneTV

    27 Kasım 2010