C#
Пример
using System;
// подключаем библиотеку для работы с файлами
using System.IO;
namespace ConsoleApplication1
{
public class Device
{
public void ShowTextOnDisplay(String text)
{
// выводим текст на экран
Console.WriteLine(text);
}
public void StoreTextInFile(String text)
{
// сохраняем текст в файл
string filePath = @"D:\1.txt";
File.WriteAllText(filePath, text);
}
}
class Program
{
static void CalculateSum(int[] values, Action<string> showMethod)
{
// считаем сумму
int result = 0;
for (int i=0; i<values.Length; i++)
result += values[i];
// выводим результат
showMethod(result.ToString());
}
static void Main(string[] args)
{
Device device = new Device();
// массив чисел и функция ShowTextOnDisplay это делегат Action<string>
CalculateSum(new int[] { 10, 5, 7 }, device.ShowTextOnDisplay);
// массив чисел и функция StoreTextInFile это делегат Action<string>
CalculateSum(new int[] { 6, 23, 72, 45, 67 }, device.StoreTextInFile);
}
}
}
в C# коде мы написали:
string filePath = @"D:1.txt";
Знак @ перед началом строки в C# означает то, что escape-последовательности не обрабатываются.
Читать подробнее:
@ перед началом строки в C#...
C#
using System;
// подключаем библиотеку для работы с файлами
using System.IO;
namespace ConsoleApplication1
{
class Program
{
static void CalculateSum(int[] values, Predicate<int> filterPredicate)
{
// считаем сумму
int result = 0;
for (int i = 0; i < values.Length; i++)
{
int value = values[i];
// filtering
if (filterPredicate(value))
result += values[i];
}
// выводим результат
Console.WriteLine(result);
}
static void Main(string[] args)
{
// Считаем сумму для чисел > 5
CalculateSum(new int[] { 10, 5, 7, 23 }, delegate(int value) { return value > 5 ? true: false; });
// Считаем сумму для чисел > 23 и чисел < 50
CalculateSum(new int[] { 6, 23, 72, 45, 67 }, delegate(int value) { return (value > 23 && value < 50) ? true : false; });
}
}
}
C#
using System;
using System.Linq;
using System.Collections.Generic;
namespace ConsoleApplication1
{
class Program
{
public static string MySelector(string value)
{
return value.ToUpper();
}
static void Main(string[] args)
{
// массив
string[] arrNames = new string[] { "Hello", "Good morning", "Bye" };
// делегат Func
Func<string, string> selector = MySelector;
// преобразуем слова
IEnumerable<string> convertedNames = Enumerable.Select(arrNames, selector);
// показываем результат на экране
foreach (string str in convertedNames)
Console.WriteLine(str);
// на экране увидим
// "HELLO"
// "GOOD MORNING"
// "BYE"
}
}
}
Объяснение примера
В C# есть
Select в который 2-ым параметром передается делегат
Func