Форум программистов, компьютерный форум, киберфорум
C# .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/5: Рейтинг темы: голосов - 5, средняя оценка - 5.00
 Аватар для Cdvig
9 / 9 / 4
Регистрация: 08.10.2009
Сообщений: 173

Перегрузка

16.11.2011, 06:45. Показов 981. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Собственно как?
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
class MyClass
{
    public int x {get; set;}    
    public int y {get; set;}
    public MyClass()
    {
        Console.WriteLine(this.x + this.y);
    }
    Public MyClass(int x, int y)
    {
        this.x = x;
        this.y = y;
        // вот здесь нужно вызвать MyClass() на выполнение;
    }
}
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
16.11.2011, 06:45
Ответы с готовыми решениями:

Перегрузка
Здравствуйте. Есть две проблемы, с которыми никак не удается разобраться. Подскажите, пожалуйста, кто разбирается. 1. Требуется...

Перегрузка
В общем Такое дело! Тема перегруженные функции! Задание: 2 массива массив типа int и массив типа double Программа...

Перегрузка констант
Дан двумерный массив вещественных чисел. Необходимо сделать перегрузку констант true и false. Обращение к экземпляру класса дает значение...

10
102 / 102 / 13
Регистрация: 22.10.2011
Сообщений: 328
16.11.2011, 06:51
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
class MyClass
{
        public int x {get; set;}        
        public int y {get; set;}
protected void doit()
{
                Console.WriteLine(this.x + this.y);
}
        public MyClass()
        {
doit();
        }
        Public MyClass(int x, int y)
        {
                this.x = x;
                this.y = y;
                doit();
        }
}
1
 Аватар для Cdvig
9 / 9 / 4
Регистрация: 08.10.2009
Сообщений: 173
16.11.2011, 06:53  [ТС]
ну это я тоже рассматривал, но думал что есть другой способ вызвать.
C#
1
Console.WriteLine(this.x + this.y);
0
102 / 102 / 13
Регистрация: 22.10.2011
Сообщений: 328
16.11.2011, 07:01
думаю тебе пригодится конструкция *base*.
На будущее

например если ты сделал класс с методами, а потом делаешь второй класс который является наследником первого, второй можете "переписать" методы первого, но и "оригиналы" вызвать можно тоже.

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
    class MyClassA
    {
        public string getS()
        {
            return "111";
        }
    }
 
    class MyClassB : MyClassA
    {
        public override string getS()
        {
            return base.getS() + "222";
        }
    }
1
 Аватар для Cdvig
9 / 9 / 4
Регистрация: 08.10.2009
Сообщений: 173
16.11.2011, 07:15  [ТС]
А вот если так?
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
class MyClassA
{
    public int Width {get; set;}    
    public int Height {get; set;}
    public MyClassA()
    {
        getS();
    }
    public string getS()
    {
        return "111" + (Width/Height).ToString();
    }
    Public MyClassA(int Width, int Height)
    {
        this.Width = x;
        this.Height = y;
        getS();
    }
}
class MyClassB : MyClassA
{
    public MyClassB(int Width, int Height, int x, int y)
    {
            //и вот как из этого класса записать значения в поля Width и Height?
    }
}
Ведь перед выполнением класса MyClassB сначало выполнится родитель MyClassA
0
102 / 102 / 13
Регистрация: 22.10.2011
Сообщений: 328
16.11.2011, 07:25
у тебя тут ошибка
Цитата Сообщение от Cdvig Посмотреть сообщение
this.Width = x; this.Height = y;
я поправил в своем примере
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
   class MyClassA
    {
        public int x { get; set; }
        public int y { get; set; }
        public int Width { get; set; }
        public int Height { get; set; }
        
        public MyClassA()
        {
            getS();
        }
 
        public MyClassA(int Width, int Height)
        {
            this.Width = Width;
            this.Height = Height;
            getS();
        }
 
        public string getS()
        {
            return "111" + (Width / Height).ToString();
        }
    }
 
    class MyClassB : MyClassA
    {
        public MyClassB(int Width, int Height, int x, int y)
        {
            this.Width = Width;
            this.Height = Height;
            this.x = x;
            this.y = y;
        }
    }
1
 Аватар для Cdvig
9 / 9 / 4
Регистрация: 08.10.2009
Сообщений: 173
16.11.2011, 07:37  [ТС]
Вот
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
class Program
    {
        static void Main(string[] args)
        {           
            MyClassA classA = new MyClassA(35, 5);
            Console.WriteLine(classA.getS());//Работает
            Console.ReadKey();
            MyClassB classB = new MyClassB(35, 5);
            /*не работает ошибка деления на нуль так, как в  
             MyClassA не поступает значения Width, Heigh из класса MyClassB */
 
            Console.WriteLine(classB.getS());
            Console.ReadKey();
        }
    }
    class MyClassA
    {
        public int x { get; set; }
        public int y { get; set; }
        public int Width { get; set; }
        public int Height { get; set; }
 
        public MyClassA()
        {
            getS();
        }
 
        public MyClassA(int Width, int Height)
        {
            this.Width = Width;
            this.Height = Height;
            getS();
        }
 
        public string getS()
        {
            return (Width / Height).ToString();
        }
    }
 
    class MyClassB : MyClassA
    {
        public MyClassB(int Width, int Height)
        {
            this.Width = Width;
            this.Height = Height;
        }
    }
Как это обойти?
0
102 / 102 / 13
Регистрация: 22.10.2011
Сообщений: 328
16.11.2011, 07:49
C#
1
2
3
4
public MyClassA()
        {
            //getS(); Это нужно убрать
        }
Добавлено через 3 минуты
почему, я думаю и так понятно: ты вызываешь метод
Цитата Сообщение от SNOOPYKZ Посмотреть сообщение
getS();
в конструкторе при этом переменные пустые
0
 Аватар для Cdvig
9 / 9 / 4
Регистрация: 08.10.2009
Сообщений: 173
16.11.2011, 07:51  [ТС]
да а если мне надо провести например заполнение матрици в классе родителе с шириной Width и высотой Height.
0
102 / 102 / 13
Регистрация: 22.10.2011
Сообщений: 328
16.11.2011, 08:11
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
using System;
 
namespace TempConsole1
{
    class Program
    {
        static void Main(string[] args)
        {
            MyClassA classA = new MyClassA(35, 5);
            Console.WriteLine(classA.getS());//Работает
            Console.ReadKey();
            MyClassB classB = new MyClassB(35, 5);
            /*не работает ошибка деления на нуль так, как в  
             MyClassA не поступает значения Width, Heigh из класса MyClassB */
 
            Console.WriteLine(classB.getS());
            Console.ReadKey();
        }
    }
    class MyClassA
    {
        public int[,] matrix { get; set; }
        public int x { get; set; }
        public int y { get; set; }
        public int Width { get; set; }
        public int Height { get; set; }
 
        public MyClassA()
        {
            //getS();
        }
 
        public MyClassA(int Width, int Height)
        {
            this.Width = Width;
            this.Height = Height;
            getS();
        }
 
        public string getS()
        {
            return (Width / Height).ToString();
        }
 
        public void fillMatrix()
        {
            matrix = new int[Width, Height];
            for (int i = 0; i < Width; i++)
            {
                for (int j = 0; j < Height; j++)
                {
                    matrix[i, j] = i * j;
                }
            }
        }
    }
 
    class MyClassB : MyClassA
    {
        public MyClassB(int Width, int Height)
        {
            this.Width = Width;
            this.Height = Height;
        }
    }
}
потом вызываешь хоть откуда
C#
1
public void fillMatrix()
Добавлено через 11 минут
а вообще про многомерные массивы можно почитать

http://msdn.microsoft.com/ru-r... 9wwz4.aspx
http://msdn.microsoft.com/ru-r... 90%29.aspx

классно написано
1
Эксперт .NET
 Аватар для kolorotur
17823 / 12973 / 3382
Регистрация: 17.09.2011
Сообщений: 21,261
16.11.2011, 11:26
Цитата Сообщение от Cdvig Посмотреть сообщение
Собственно как?
Самое прсотое - вот так:
C#
1
2
3
4
5
6
7
8
9
10
11
12
        public int x {get; set;}        
        public int y {get; set;}
        public MyClass() : this (0, 0)
        {
                
        }
        Public MyClass(int x, int y)
        {
                this.x = x;
                this.y = y;
                Console.WriteLine(this.x + this.y);
        }
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
16.11.2011, 11:26
Помогаю со студенческими работами здесь

Перегрузка операторов
Перегрузка операторов

Перегрузка функций
А каковы в C# правила подбора подходящей функции из набора перегруженных?

Перегрузка операторов
Перегрузил оператор &quot;+&quot;. При тестировании программа не обращает внимания на порядок следования входящих параметров. Пробовал даже поменять...

Перегрузка функции
Здравствуйте Уважаемые программисты! Очень нужна ваша помошь! Нужно написать программу Задание Написать программы для решения...

перегрузка и наследование.
Помогите,пожалуйста. В этой задаче нужно сделать перегрузку и наследование. using System; using System.Collections.Generic; ...


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США. Нашел на реддите интересную статью под названием «Кто-нибудь знает, где получить бесплатный компьютер или. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru