Имеет ли смысл присваивать Nullable свойству Tag любого элемента управления - C#
Формулировка задачи:
Листинг программы
- private void LeftDoorOpenCloseButton_Click(object sender, RoutedEventArgs e)
- {
- Duration duration = new Duration(TimeSpan.FromMilliseconds(800d));
- if (!leftDoorImage.IsInitilizedPictures)
- leftDoorImage.InitImages(ContentManagerProvider.LeftDoorBitmaps);
- bool? opened = (bool?)(leftDoorImage.Tag ?? (leftDoorImage.Tag = new bool?(false)));
- if (opened == false)
- leftDoorImage.BeginAnimation(duration);
- else
- leftDoorImage.BeginAnimation(duration, reverse: true);
- leftDoorImage.Tag = !opened;
- }
Листинг программы
- bool? opened = (bool?)(leftDoorImage.Tag ?? (leftDoorImage.Tag = new bool?(false)));
Решение задачи: «Имеет ли смысл присваивать Nullable свойству Tag любого элемента управления»
textual
Листинг программы
- using System;
- using System.Diagnostics;
- namespace ConsoleApplication18
- {
- class Test
- {
- public object Tag { get; set; }
- }
- class Program
- {
- static void Main(string[] args)
- {
- const int n = 1000*1000;
- var test = new Test();
- bool trash;
- var sw = Stopwatch.StartNew();
- for (int i = 0; i < n; i++)
- {
- trash = test.Tag != null ? (bool) test.Tag : false;
- test.Tag = !trash;
- }
- sw.Stop();
- Console.WriteLine(sw.Elapsed);
- trash = (bool) test.Tag;
- GC.KeepAlive(trash);
- test = new Test();
- bool? nullabletrash = null;
- var sw2 = Stopwatch.StartNew();
- for (int i = 0; i < n; i++)
- {
- nullabletrash = (bool?) (test.Tag ?? (test.Tag = new bool?(false)));
- test.Tag = !nullabletrash;
- }
- sw2.Stop();
- Console.WriteLine(sw2.Elapsed);
- GC.KeepAlive(nullabletrash);
- }
- }
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д