ГЛАВНАЯ     АРХИВ     НАПИСАТЬ АДМИНУ     ПОДПИСАТЬСЯ НА RSS     ВОЙТИ      

Поиск

Категории

Облако тегов

acer ado.net amd asp.net c sharp c# cms css exceptions google html ipad iphone it бизнес javascript jquery linq microsoft mysql net nokia nokia lumia samsung seo silverlight sql surface tsql windows 8 windows blue windows phone windows rt xna безопасность библиотека вопросы на собеседовании интересные проекты интернет интернет магазин исключения книга книги компьютерная безопасность компьютерные игры контролы курсы по программированию логированние исключений мобильные приложения монетизация сайтов наушники новости новости it новости microsoft новости интернет новости технологий ноутбук ноутбуки обработка исключений оптимизация острова периферия планшет планшеты поддержка сайтов поисковое продвижение программы продвижение продвижение сайта продвижение сайтов рабство разработка игр разработка сайтов раскрутка сайта рекламные технологии смартфон смартфоны собеседование создание сайтов средства разработки туризм фриланс хостинг яндекс
  << Предыдущий пост       Следующий пост >>  
От: inbruk
29. ноября 2010 02:30

Многие объекты в приложениях под .NET хранятся в иерархии. Например: визуальные контролы, файлы и папки, и т.д. Есть много различных алгоритмов для нахождения корня иерархии.
Вот один из них:



SomeObject root = firstObject;
SomeObject parent = this.Parent;

while (parent != null)
{
root = parent;
parent = parent.Parent;
}

Здесь с firstObject начинаем поиск, а в root в конце работы остается искомый корень.

Дальше идет простая консольная программа на C#, демонстрирующая такой подход. Важно, что корень получает метод GetRoot (), а не некое свойство. Возврат корня методом сделан для того чтобы подчеркнуть: при каждом возвращении происходит пересчет корня. Это сделано подобно тому, что класс Control имеет метод FindForm().


using System;
using System.Collections.Generic;

namespace ConsoleApplication1
{
class Program
{
static void Main( string[] args )
{
SomeUsefulClass a = new SomeUsefulClass( "a" );
SomeUsefulClass b = new SomeUsefulClass( "b" );
SomeUsefulClass c = new SomeUsefulClass( "c" );
SomeUsefulClass d = new SomeUsefulClass( "d" );

a.AddChild( b );
b.AddChild( c );
c.AddChild( d );

Write( a );
Write( b );
Write( c );
Write( d );

Console.ReadKey(true);
}
static void Write( SomeUsefulClass obj )
{
string objName = obj.Name;
SomeUsefulClass parent = obj.Parent;
string parentName = parent == null ? "none" : parent.Name;
SomeUsefulClass root = obj.GetRoot();
string rootName = root == null ? "none" : root.Name;
Console.WriteLine( "Object={0}, Parent={1}, Root={2}", objName, parentName, rootName );
}
}
class SomeUsefulClass
{
public SomeUsefulClass()
{
}
public SomeUsefulClass( string name )
{
this.m_Name = name;
}
private string m_Name;
public string Name
{
get
{
return this.m_Name;
}
set
{
this.m_Name = value;
}
}
public override string ToString()
{
return this.m_Name;
}
private SomeUsefulClass m_Parent;
public SomeUsefulClass Parent
{
get
{
return this.m_Parent;
}
}
private List<SomeUsefulClass> m_Children = new List<SomeUsefulClass>();
public void AddChild( SomeUsefulClass obj )
{
this.m_Children.Add( obj );
obj.m_Parent = this;
}
public IEnumerator<SomeUsefulClass> Children
{
get
{
return this.m_Children.GetEnumerator();
}
}
public SomeUsefulClass GetRoot()
{
SomeUsefulClass root = this;
SomeUsefulClass parent = this.Parent;

while (parent != null)
{
root = parent;
parent = parent.Parent;
}

return root;
}
}
}


Смотрите видео про игрун камикадзе 2 на igruncom.ru. У меня получается 2 неделю.

Похожие записи


Вопросы на собеседовании C#, Net, ASP.NET, SQL
Продолжая тему вопросов на собеседовании. Нашел еще одну подборку. Оригинал лежит здесь . Перенес, чтобы не затерялось. Есть вполне вменяемые ответы (хотя, на некоторые вопросы ответил бы по-другому). Ответы находятся после списка вопросов, я их не менял. 23. Что такое шаблон проектирования Model/View/Controller? Как и зачем его применяют? 2...

Способы заработка на сайте
На этом блоге было много постов про производство и раскрутку сайтов. Но пока не было про заработок на них. Пора исправить этот недочет. Здесь будут описаны по возможности не фантастичные, и не супер низко прибыльные способы. Также упор будет сделан именно на организацию процесса, а не технических деталях, которых в обилии в интернете. Несмотря на то, что как пр...

Silverlight, HTML5 и непрозрачная стратегия развития Microsoft
Оригинал статьи взят отсюда: Silverlight, HTML5 и непрозрачная стратегия развития Microsoft Автор: Peter Bright Переводчик: Mairon     По непонятным мне на данный момент причинам, похоже, что многие разработчики, присутствовавшие на недавней конференции PDC-2010 (Крупнейшая конференция Microsoft для разработчиков — Прим. переводчика), были сильн...

Комментарии

 
nobelwerfer 29.07.2011 18:48:09 #

таинства деревьев раскрываете школьникам

Добавить комментарий




biuquote
  • Комментарий
  • Предпросмотр
Loading


  Сохранить комментарий