Программирование на C#

orlum

Ословед
for(int i = 0; i < objects.Count; i++)
{
objects[i].Metod1();
objects[i].Metod2();
}


или

foreach(
Object object in objects
)
{
object.Metod1
();
object.Metod2
();
}
 

orlum

Ословед
foreach (Object object in objects)
{
if (object.Value123 = -2)
{
object.Metod1
();
object.Metod2
();
}
}
 

    SMooKE

    очки: 9.999
    Нет комментариев
foreach (Object object in objects)
{
if (object.Value123 = -2)
{
object.Metod1
();
object.Metod2
();
}
}

Меня интересует именно методы Count для листа, возможно ли рассчитать число объектов с определёнными свойствами одной строкой, например:
PHP:
for ( int =0; I < objects.Count(рассчитать число объектов с определенными свойствами); i++)
 

SunnyMan

Namynnuz
Ну, можно, конечно, и одной строкой, для этого используется LINQ и лямбда-выражения. Другой вопрос, не рановато ли к ним тянуться, не разобравшись с самыми базовыми полями коллекций и дженериков? Давай, для начала, окончательно договоримся, что именно и зачем ты делаешь. Работать с object это, конечно, весело... Но зачем? Откуда, к тому же, у самого базового класса вдруг возьмутся какие-то левые методы и поля? Опиши задачу нормально. Полновесным кодом, чтобы было понятно как, что, почему и зачем. А использование, в общем-то, пожалуй, синтаксического сахара (в данном случае) для сворачивания не таких-то уж и длинных выражений, может обернуться окончательно оторванной ногой, при чём не только своей, но и окружающих.
 

Serge

Ословед
[S\eR/G];26051226 написал(а):
foreach (Object object in objects)
{
if (object.Value123 = -2)
{
object.Metod1
();
object.Metod2
();
}
}

Меня интересует именно методы Count для листа, возможно ли рассчитать число объектов с определёнными свойствами одной строкой, например:
PHP:
for ( int =0; I < objects.Count(рассчитать число объектов с определенными свойствами); i++)
Рассчитать количество по условию не проблема, а толку-то? В цикле FOR все равно будут перебираться все объекты. Тут действительно нужно либо LINQ, либо не заниматься извращениями в одну строку, не забывать о читаемости кода.)

Если извращаться, то можно наследовать класс от List, добавить туда метод GetSelectedList(kfbsfkbs) который будет возвращать избранные записи и тогда будет

Код:
foreach (Object object in objects.GetSelectedList())
{
*************************
}
 

FallAngel

Ословед
День добрый. Необходимо сделать нажатие кнопок в фоновом режиме Shift Ctrl и стрелка вниз.
Буду признателен, если выложите уже готовую программу, не важно на чем написана.
P.S. Программа необходима для имитации нажатия горячих кнопок.
 
Спасибо за ответы :)
еще есть вот такой вопрос,
Мне нужно выполнить теже пару методов, только с объектом число k которых самое наименьшее,
число k у всех разное, объектов много.
PHP:
Object object;
List<Object> objects = new List<Object>();

for(int i = 0; i < objects.Count; i++)
{
        "eсли objects[i].k самое меньшее из объектов списка objects"
         {
               objects[i].Metod1();
               objects[i].Metod2();
         }
}
 

Alexandr172

Ословед
[S\eR/G];26153991 написал(а):
Спасибо за ответы :)
еще есть вот такой вопрос,
Мне нужно выполнить теже пару методов, только с объектом число k которых самое наименьшее,
число k у всех разное, объектов много.
PHP:
Object object;
List<Object> objects = new List<Object>();

for(int i = 0; i < objects.Count; i++)
{
        "eсли objects[i].k самое меньшее из объектов списка objects"
         {
               objects[i].Metod1();
               objects[i].Metod2();
         }
}

Код:
    class Program
    {
        static void Main(string[] args)
        {
            var objects = new List<A>()
            {
                new A() { k = 1 },
                new A() { k = 2 },
                new A() { k = 3 },
            };

            A a = objects[0];
            int k = objects[0].k;

            for (int i = 1; i < objects.Count; i++)
            {
                if (objects[i].k < k)
                {
                    k = objects[i].k;
                    a = objects[i];
                }
            }

            a.Method1();
            a.Method2();
        }
    }

    class A
    {
        public int k { get; set; }

        public void Method1()
        {
        }

        public void Method2()
        {
        }
    }
 

SunnyMan

Namynnuz
[S\eR/G], слушай, я всё, конечно, понимаю, но с таким виртуальным подходом ты далеко не уедешь. Создавай некую игровую ситуацию. С объектами. Пускай это будет выглядеть по-идиотски, зато сразу же отложится в голове и придёт понимание. По факту, тебе просто нужно было вбить в гугл запрос уровня «c# find smallest object in list».

Как бы это, вероятно, стоило сделать: http://pastebin.com/faXgJri6

Поясню. По факту мы всё так же работаем с List<T>, но у нас уже какой-то определённый класс, в котором переменные и методы названы согласно логике, сути происходящего. Если ты используешь List таким образом, лучше, вероятно, наследовать класс от List<T>. По крайней мере, такая обёртка будет выглядеть внятнее, всё будет внутри класса, с большим контролем.

Далее, мы, по сути, вызываем те самые два метода после поиска минимального параметра. Но эти методы тоже что-то делают, что-то показывают. А иначе... Зачем они вообще нужны? Поиск представлен LINQ запросами, в которых предикаты описываются через лямбда-функции. Вообще, кажется страшным, но, на самом деле, всё удобно и логично. Это, по результату работы, всего-лишь свёртка, синтаксический сахар, в общем-то, тривиальной записи, которую ты и хотел получить.

List<T>.Min
List<T>.FindIndex

Ну а вообще, задача поиска минимального элемента — это одна из самых начальных, базовых задач. Может, для начала научиться и понять с какими-нить там массивами? Потому что дальше без настолько базовой алгоритмики будет очень трудно. Да что там трудно... Невозможно. Читай Andrew Troelsen. Pro C# 5.0 and the .NET 4.5 Framework, без этой базы... Ты так и будешь тыкаться, мыкаться... А понимания возникать всё не будет, и не будет.
 

MIDAS

Ословед
Есть ли под C# библиотеки для построения блок-схем? Нюанс: интересует отдельная библиотека, UI для работы с ней будет написан свой.
А то сейчас решил реализовать это дело.. И по чесноку ступор возник уже в том - как хранить блок-схему в памяти. Решил идти через JSON.NET.. встал вопрос об оптимальной JSON-Scheme... Вроде решил - пошли проблемы с удалением, добавлением блоков..
Долго ли коротко ли, решил не изобретать велосипед и поискать библиотеку. На находил только программы (т.е. либо г*овнокод по системе "всё в один файл и пофиг на переносимость", либо вполне юзабельная прога, но вычленить оттуда в отдельную библиотеку проблематично, ибо всё как-то привязано в view-хе.

Если что, то вот примерный интерфейс для библиотеки:
PHP:
namespace FlowChart{   
 public interface IFlowChart    {       
void AddBlock(BlockTypes type, int previousBlocks = 0, int nextBlock = 1, string content = null);        
void RemoveBlock(int id);       
 int GetBlocksCount();       
 void ChangeContentBlock(int id, string content);        
void SetJsonFile(string filePath);        
void SetJson(string json);        
void SaveToFile(string filePath);   
 }}
 

SunnyMan

Namynnuz
Как бе... C# сильно завязан на XML, как раз таки использование JSON — это, в какой-то степени, велосипед и вообще не очень. По факту, тебе нужно какое-то дерево (в зависимости от того, какого рода будет блок-схема), и его сереализация в XML.
 

himera

Ословед
Нужен компонент для построения Древовидноного Грида (TreeGrid). Может кто чего подсказать путного ? А то уже роюсь второй день в интернете. Пока остановился на Teleric RadGridView но подходящая компонента есть для WPF а мне нужно для WinForms.
 

MIDAS

Ословед
Как бе... C# сильно завязан на XML, как раз таки использование JSON — это, в какой-то степени, велосипед и вообще не очень. По факту, тебе нужно какое-то дерево (в зависимости от того, какого рода будет блок-схема), и его сереализация в XML.
Ну бабай с ним, пусть будет XML.
Что значит какая будет блок-схема? Она может быть любая из элементов следования, ветвления и ВводаВывода.
Тем не менее: всё ещё в поиске.
 
Награды
7
Есть ли под C# библиотеки для построения блок-схем? Нюанс: интересует отдельная библиотека, UI для работы с ней будет написан свой.
А то сейчас решил реализовать это дело.. И по чесноку ступор возник уже в том - как хранить блок-схему в памяти. Решил идти через JSON.NET.. встал вопрос об оптимальной JSON-Scheme... Вроде решил - пошли проблемы с удалением, добавлением блоков..
Вопрос. Зачем вообще использовать некие вещи, предназначенные для сериализации данных на диск, для хранения данных в памяти? Что мешает нафигачить своих классов? Лет десять назад я писал библиотеку для построения блок схем на Delphi. Там по сути дела две коллекции (списка, таблицы и т.п.) - коллекция узлов и коллекция соединений. Дерево там никаким боком.

К тому-же сегодня ты хранишь данные в JSON, а завтра понадобится в XML, а послезавтра в проперитарном формате, а после после завтра выясняется что твоя любимая библиотека для работы с XML жидко обгаживается при количестве записей измеряемом тысячами.
 

MIDAS

Ословед
Вопрос. Зачем вообще использовать некие вещи, предназначенные для сериализации данных на диск, для хранения данных в памяти? Что мешает нафигачить своих классов? Лет десять назад я писал библиотеку для построения блок схем на Delphi. Там по сути дела две коллекции (списка, таблицы и т.п.) - коллекция узлов и коллекция соединений. Дерево там никаким боком.

К тому-же сегодня ты хранишь данные в JSON, а завтра понадобится в XML, а послезавтра в проперитарном формате, а после после завтра выясняется что твоя любимая библиотека для работы с XML жидко обгаживается при количестве записей измеряемом тысячами.
Очевидно это всё потому, что данный JSON потом будет служить входными данными для другой проги. Которая может быть написана как на шарпе (тогда да, нативная сериализация бы выиграла), так и на php (где JSON из коробки по сути) с вероятностью 50/50.
 
Награды
7
Очевидно это всё потому, что данный JSON потом будет служить входными данными для другой проги. Которая может быть написана как на шарпе (тогда да, нативная сериализация бы выиграла), так и на php (где JSON из коробки по сути) с вероятностью 50/50.
Об чём и речь. Для внутреннего употребления C# динамическая структура данных, для внешних контактов хоть JSON хоть XML хоть чёрта лысого. Одно другому не мешает. Все эти JSONы и XMLи медленные. Когда у тебя работа с ними в час по капле это не заметно. А когда у тебя 50 процессов и каждый хочет работать с подобными вещами, тогда ты смотришь и офигеваешь как у тебя CPU и Memory ползут вверх на тривиальных казалось бы вещах. Или когда тебе надо сохранять их часто. Самое прикольное что после этого ты уже ничего не можешь сделать, кроме как переписать всё к едрене фене.

Ишшо раз повторяю. flowchart это по сути дела граф. Граф легко ложится на обычную двумерную матрицу. Или на два списка. Которые ты всё равно будешь активно дёргать из UI, и тебе будет всё равно что дёргать - свои классы или точно такие же, но чужие со всеми багами в нагрузку. Не та это задача чтобы смотреть на third-party библиотеки.
 

zer0day

Ословед
у меня есть код

Код:
        public static string CreatePassword(int PasswordLength)
        {
            const string valid = "1234567890";
            StringBuilder res = new StringBuilder();


            Random rand = new Random((int)DateTime.Now.Ticks);


            while (0 < PasswordLength--)
            {
                res.Append(valid[rand.Next(valid.Length)]);
            }
            return res.ToString();
        }

он генерирует текст НО генерирует с повторениями!!! как мне сделать что бы он генерировал строки без повторений?
 

Serge

Ословед
у меня есть код

Код:
        public static string CreatePassword(int PasswordLength)
        {
            const string valid = "1234567890";
            StringBuilder res = new StringBuilder();


            Random rand = new Random((int)DateTime.Now.Ticks);


            while (0 < PasswordLength--)
            {
                res.Append(valid[rand.Next(valid.Length)]);
            }
            return res.ToString();
        }

он генерирует текст НО генерирует с повторениями!!! как мне сделать что бы он генерировал строки без повторений?
я как-то писал генератор паролей на работе, столкнулся с тем, что рэндомайзер выдает одинаковые значения поскольку DateTime.Now.Ticks банально не успевает поменяться, поборол вставкой микро-паузы в алгоритме.
 
Сверху