1 / 20

MVVM

MVVM. Простая MVVM- архитектура. Архитектура сложного корпоративного приложения. Generic- методы. static void Swap( ref int lhs, ref int rhs ) { int temp; temp = lhs; lhs = rhs ; rhs = temp; }. int a = 1; int b = 2; Swap( ref a, ref b);.

sora
Download Presentation

MVVM

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. MVVM Простая MVVM-архитектура Архитектура сложного корпоративного приложения

  2. Generic-методы staticvoid Swap(refint lhs, refintrhs) { int temp; temp = lhs; lhs = rhs; rhs = temp; } int a = 1; int b = 2; Swap(ref a, ref b);

  3. staticvoid Swap<T>(ref T lhs, ref T rhs) { T temp; temp = lhs; lhs = rhs; rhs = temp; } int a = 1; int b = 2; Swap<int>(ref a, ref b);

  4. voidSwapIfGreater<T>(ref T lhs, ref T rhs) where T : IComparable<T> { if (lhs.CompareTo(rhs) > 0) { T temp = lhs; lhs = rhs; rhs = temp; } }

  5. Generic-классы classPair<T, U> { public T First { get; set; } public U Second { get; set; } } var p = newPair<string, int> { First = "abc", Second = 10 };

  6. Методы расширений publicstaticclassIntExtensions { publicstaticboolIsOdd(int x) { return x % 2 == 1; } } var x = 5; if (IntExtensions.IsOdd(x)) { //... }

  7. publicstaticclassIntExtensions { publicstaticboolIsOdd(this int x) { return x % 2 == 1; } } var x = 5; if (x.IsOdd()) { //... }

  8. publicstaticclassStringExtensions { publicstaticint WordsCount(thisstring str) { return str.Split(newchar[] { ' ', '.', '?', '!' }, StringSplitOptions.RemoveEmptyEntries).Length; } } string str = "qwe rt y"; int x = str.WordsCount();

  9. Делегаты Делегат  — это указатель на функцию. Делегат дает возможность одной функции вызывать другую, неизвестную заранее (например, делегат на эту вызываемую функцию передается в вызывающую функцию как параметр). При описание делегата указывается ключевое слово delegate, его название и сигнатура метода, на который делегат сможет ссылаться: delegatevoid MyDelegate(string s); Название делегата: MyDelegate На какие методы он может ссылаться? На те, у которых тип возвращаемого значения voidи один формальный аргумент string.

  10. Простой пример делегата classDelegateExample { delegateintOperation(int a, int b); staticint Sum(int a, int b) { return a + b; } publicstaticvoid Main() { Operation op = newOperation(Sum); var result = op(1, 2); } }

  11. Анонимные функции classDelegateExample { delegateintOperation(int a, int b); publicstaticvoid Main() { Operation op = delegate(int a, int b) { return a + b; }; var result = op(1, 2); } }

  12. Лямбда-выражения classDelegateExample { delegateintOperation(int a, int b); publicstaticvoid Main() { Operation op = (a, b) => a + b; var result = op(1, 2); } }

  13. publicstaticclassCollectionExtensions { publicstaticvoidForEach<T>(thisIEnumerable<T> collection, Action<T> action) { foreach (var item in collection) { action(item); } } } var array = new[] {1, 2, 3, 4, 5}; array.ForEach(x => Console.WriteLine(x));

  14. Язык LINQ using System.Linq; var numbers = new[] { 5, 4, 1, 3, 9, 8, 6, 7, 2, 0 }; varevensCount = numbers.Count(n => n % 2 == 0); foreach (var item innumbers.Where(n => n % 2 == 0 && n < 5)) { Console.WriteLine(item); } var fetch = from n in numbers where n < 5 select n;

  15. publicclassBook { publicstring Title { get; set; } publicintPages { get; set; } } var books = newList<Book> { newBook {Title = "ВОЙНА И МИРЪ", Pages = 1274}, newBook {Title = "Люди доброй воли", Pages = 4959}, }; varsortByPages = books.OrderByDescending(x => x.Pages); varfirstBook = books.FirstOrDefault(); varsecondBook = books .Skip(1) .Take(1);

  16. var books = newList<Book>(); for (int i = 1; i <= 5; i++) { books.Add(newBook {Title = "Книга №" + i}); } var books = Enumerable.Range(1, 5) .Select(i => newBook {Title = "Книга №" + i});

  17. var numbers = new[] {1, 3, 5, 7}; varstr = string.Join(",", numbers);

  18. События Событие – это механизм C# для оповещения делегатов. Издатель определяет момент срабатывания события, подписчики получают оповещение. У события может быть несколько подписчиков, но интерфейс подписки един. Издатель Подписчик

  19. classCalculations { publicdelegatevoidPercentsHandler(int percent); publiceventPercentsHandlerPercentChange; publicList<ulong> FindSimples(ulong a, ulong b) { var result = newList<ulong>(); varpercentStep = (b - a) / 100; for (var n = a; n <= b; n++) { if (......) result.Add(n); if ((n - a) % percentStep == 0 && PercentChange != null) PercentChange((int)((n - a) / percentStep)); } return result; } }

  20. varcalc = newCalculations(); calc.PercentChange += x => { Console.Write("\r{0}%", x); }; varnums = calc.FindSimples(1, 100000000);

More Related