Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.62/21: Рейтинг темы: голосов - 21, средняя оценка - 4.62
50 / 4 / 0
Регистрация: 21.02.2018
Сообщений: 153

С помощью делегата из одного класса вызвать private метод с другого класса

30.11.2018, 09:57. Показов 4545. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
доброго времени суток. такой вопрос. С применением делегатов и пониманием проблем нет когда происходит простой вызов из Main() функции. Но если у меня в одном проекте есть еще два других класса, и я хочу с помощью делегата из одного класса вызвать privat метод с другого класса вот тут застреваю. может подстажите?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
30.11.2018, 09:57
Ответы с готовыми решениями:

Как вызвать из одного класса (для метода типа void) метод типа boolean другого класса?
ребят, только учусь и конечно, вопросов возникает много. ситуация вот в чем. есть массив. я должна найти в i-том элементе какую-то...

Как вызвать определенный метод переданного класса через метод другого класса?
Добрый день. Захотел я вызвать в методе класса метод некоего другого класса, о котором я пока не знаю. Мне пришла в голову...

Передача значения переменной из метода одного класса в метод другого класса
Добрый вечер! Есть основная форма Form1 в которой есть метод private void button1_Click(object sender, EventArgs e) обрабатывающий...

8
Эксперт JS
6496 / 3907 / 2006
Регистрация: 14.06.2018
Сообщений: 6,781
30.11.2018, 10:02
Приватный метод из другого класса можно вызвать только из неприватного метода того же другого класса.
Так что подумайте над тем, как осуществить хитрую цепочку вызовов.

Если хотите конкретной подсказки, выкладывайте исходный код и полное грамотное описание задачи.
0
50 / 4 / 0
Регистрация: 21.02.2018
Сообщений: 153
30.11.2018, 10:29  [ТС]
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
 class Program
    {
        static void Main(string[] args)
        {
            Stopwatch stopwatch = new Stopwatch();
            //int[] arr = { 800, 11, 50, 771, 649, 770, 240, 9 };
            object[] obj = {
                new Planets() { PlanetName = "Jupiter", PlanetSize = 69911 },
                new Planets() { PlanetName = "Uranus", PlanetSize = 25362},
                new Planets() { PlanetName = "Saturn", PlanetSize = 58232}};
 
            
            MyTools.Sort(obj);
            
 
 
            for (int i = 0; i < obj.Length; i++)
            {
                Console.WriteLine(obj[i]);
            }
 
            Console.ReadKey();
        }
    }
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
class Planets 
    {
        public string PlanetName { get; set; }
        public int PlanetSize { get; set; }
 
        public override string ToString()
        {
            return $"Planet = {PlanetName}, Size = {PlanetSize}";
        }
        public  bool CompareTo(object obj)
        {
            Planets planet = obj as Planets;
            if (this.PlanetSize > planet.PlanetSize)
                return true;
            return false;
        }
    }
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
class MyTools
    {
        public static void Sort(object[] array)
        {
            for (int i = 0; i < array.Length; i++)
            {
                for (int j = i + 1; j < array.Length; j++)
                {
                    if (((CompareClass)array[i]).CompareTo(array[j]))
                    {
                        object temp = array[i];
                        array[i] = array[j];
                        array[j] = temp;
                    }
                }
            }
        }
    }
Добавлено через 2 минуты
тут я реализовал с помощью наследства. но сейчас хочу с помощью делегата из MyTools вызывать метод CompareTo
0
Эксперт JS
6496 / 3907 / 2006
Регистрация: 14.06.2018
Сообщений: 6,781
30.11.2018, 11:35
Вариант с необобщенным IComparable.
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
using System;
 
namespace Question2361535
{
    class Program
    {
        static void Main(string[] args)
        {
            IComparable[] obj = {
                new Planets() { PlanetName = "Jupiter", PlanetSize = 69911 },
                new Planets() { PlanetName = "Uranus", PlanetSize = 25362},
                new Planets() { PlanetName = "Saturn", PlanetSize = 58232}};
 
            MyTools.Sort(obj);
 
            for (int i = 0; i < obj.Length; i++)
            {
                Console.WriteLine(obj[i]);
            }
 
            Console.ReadKey();
        }
    }
 
    class Planets : IComparable
    {
        public string PlanetName { get; set; }
        public int PlanetSize { get; set; }
 
        public int CompareTo(Planets other)
            => other == null ? 1 : PlanetSize - other.PlanetSize;
 
        public int CompareTo(object obj)
        => CompareTo(obj as Planets);
 
        public override string ToString()
        => $"Planet = {PlanetName}, Size = {PlanetSize}";
    }
 
    class MyTools
    {
        public static void Sort(IComparable[] array)
        {
            for (int i = 0; i < array.Length; i++)
            {
                for (int j = i + 1; j < array.Length; j++)
                {
                    if (array[i].CompareTo(array[j]) > 0)
                    {
                        IComparable temp = array[i];
                        array[i] = array[j];
                        array[j] = temp;
                    }
                }
            }
        }
    }
}
0
50 / 4 / 0
Регистрация: 21.02.2018
Сообщений: 153
30.11.2018, 13:08  [ТС]
Цитата Сообщение от amr-now Посмотреть сообщение
Вариант с необобщенным IComparable.
мне как раз нужно без ничего. чисто делегатом.
0
Эксперт JS
6496 / 3907 / 2006
Регистрация: 14.06.2018
Сообщений: 6,781
30.11.2018, 13:48
Гиоргий, напишите полный текст задачи.
Смысл проблемы не могу уловить.

Добавлено через 5 минут
Вы хотите в статическом методе Sort() вызвать CompareTo() у экземпляра, когда неизвестно, присутствует ли у экземпляра Planets метод CompareTo() ?

А если у Planets нет метода CompareTo() ? Тогда что делать?
0
50 / 4 / 0
Регистрация: 21.02.2018
Сообщений: 153
30.11.2018, 13:48  [ТС]
Цитата Сообщение от amr-now Посмотреть сообщение
Гиоргий, напишите полный текст задачи.
Смысл проблемы не могу уловить.
Добавлено через 5 минут
Вы хотите в статическом методе Sort() вызвать CompareTo() у экземпляра, когда неизвестно, присутствует ли у экземпляра Planets метод CompareTo() ?
А если у Planets нет метода CompareTo() ? Тогда что делать?
задача была такая. Я должен написать класс(в данном задании это MyTools), который произведет сравнение двух каких либо обьектов, которые нам предложит пользователь классном Planets. я это реализовал наследством. в Planets я сделал override метода CompareTo. а сам класс Planets был наследником класса CompareClass(я просто тут уже не пислал). и в MyTools вызывался он тут
C#
1
if (((CompareClass)array[i]).CompareTo(array[j]))
0
Эксперт JS
6496 / 3907 / 2006
Регистрация: 14.06.2018
Сообщений: 6,781
30.11.2018, 13:51
Второй вариант - те, кто знает о планетах, отправляют аргументом для сортировки делегат, знающий о планетах.
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
using System;
 
namespace Question2361535
{
    class Program
    {
        static void Main(string[] args)
        {
            object[] obj = {
                new Planets() { PlanetName = "Jupiter", PlanetSize = 69911 },
                new Planets() { PlanetName = "Uranus", PlanetSize = 25362},
                new Planets() { PlanetName = "Saturn", PlanetSize = 58232}};
 
            MyTools.Sort(obj, (a,b) => ((Planets)a).PlanetSize - ((Planets)b).PlanetSize);
 
            for (int i = 0; i < obj.Length; i++)
            {
                Console.WriteLine(obj[i]);
            }
 
            Console.ReadKey();
        }
    }
 
    class Planets 
    {
        public string PlanetName { get; set; }
        public int PlanetSize { get; set; }
 
        public override string ToString()
        => $"Planet = {PlanetName}, Size = {PlanetSize}";
    }
 
    class MyTools
    {
        public static void Sort(IComparable[] array)
        {
            for (int i = 0; i < array.Length; i++)
            {
                for (int j = i + 1; j < array.Length; j++)
                {
                    if (array[i].CompareTo(array[j]) > 0)
                    {
                        IComparable temp = array[i];
                        array[i] = array[j];
                        array[j] = temp;
                    }
                }
            }
        }
 
        public static void Sort(object[] array, Comparison<object> comparison)
        {
            for (int i = 0; i < array.Length; i++)
            {
                for (int j = i + 1; j < array.Length; j++)
                {
                    if (comparison(array[i],array[j]) > 0)
                    {
                        object temp = array[i];
                        array[i] = array[j];
                        array[j] = temp;
                    }
                }
            }
        }
    }
}
0
50 / 4 / 0
Регистрация: 21.02.2018
Сообщений: 153
30.11.2018, 13:53  [ТС]
а сейчас не используя наследство, а нужно делегаты, вызвать вместо CоmpareClass CompareTo
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
30.11.2018, 13:53
Помогаю со студенческими работами здесь

Доступ к private-данным одного класса из другого
Как получить доступ к private данных одного класса в другом? В принципе нельзя. Но можешь всеже есть для этого какой то механизм??

Каким образом можно из метода одного класса, вывести в метод другого класса текст всплывающего сообщения
Доброе время суток! Есть метод отрисовки всплывающего сообщения public void SetBalloonTip() // метод отрисовки всплывающег...

Вызвать процедуру\функцию из другого объекта\класса. Из одного класса\объекта сделать два
Здравствуйте. Подскажите что не правильно делаю, и возможно ли вообще - вызвать процедуру\функцию из другого объекта\класса, в турбо...

Как правильно передать метод делегата из одного класса в другой?
Добрый день! Я написал класс который рисует спираль Архимеда в pictureBox. За основу для для прорисовки был использован делегат для...

Вызвать метод из другого класса
Не могу вызвать метод. Ошибка: Ни одна из перегрузок метода &quot;Prisp&quot; не принимает &quot;0&quot; аргументов. Подскажите пожалуйста как...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru