Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Что означает base(name)? / 25 сообщений из 31, страница 1 из 2
11.04.2017, 11:50
    #39436398
Antonariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Что означает base(name)?
В этом примере:

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
class Person
{
    public string Name { get; set; }
 
    public Person(string name)
    {
        Name = name;
    }
    public void Display()
    {
        Console.WriteLine(Name);
    }
}

class Client : Person
{
    public Client(string name) : base(name)
    {
    }
}
...
Рейтинг: 0 / 0
11.04.2017, 11:54
    #39436401
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Что означает base(name)?
дык
вызов конструктора базового класса
...
Рейтинг: 0 / 0
11.04.2017, 13:08
    #39436462
Cat2
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Что означает base(name)?
Shocker.Proдык
вызов конструктора базового класса
Сначала, сразу послe {
...
Рейтинг: 0 / 0
11.04.2017, 15:55
    #39436610
hVostt
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Что означает base(name)?
Cat2Сначала, сразу послe {

Не смог постичь смысл этой фразы )
...
Рейтинг: 0 / 0
11.04.2017, 16:14
    #39436627
Cat2
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Что означает base(name)?
hVosttCat2Сначала, сразу послe {

Не смог постичь смысл этой фразы )
Ну это же просто. Это как в обработчике событий, но там сначала выполняется то, что перед }
...
Рейтинг: 0 / 0
11.04.2017, 17:55
    #39436715
hVostt
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Что означает base(name)?
Cat2Ну это же просто. Это как в обработчике событий, но там сначала выполняется то, что перед }

Ничего себе сравнение
...
Рейтинг: 0 / 0
11.04.2017, 18:25
    #39436739
TsHeloWorlder
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Что означает base(name)?
Класс Client принимает в конструктор 2 параметра. name отдает в родительский конструктор, а id использует сам.

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
class Client : Person
{
    private int _id;

    public Client(string name, int id) : base(name)
    {
       _id = id;
    }
}



А есть еще constructor chaining:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
class Foo {
    private int id;
    private string name;
    public Foo() : this(0, "") {
    }
    public Foo(int id, string name) {
        this.id = id;
        this.name = name;
    }
    public Foo(int id) : this(id, "") {
    }
    public Foo(string name) : this(0, name) {
    }
}



когда конструктор вызывает другой конструктор этого-же класса через this() .
...
Рейтинг: 0 / 0
11.04.2017, 20:51
    #39436813
Cat2
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Что означает base(name)?
hVosttCat2Ну это же просто. Это как в обработчике событий, но там сначала выполняется то, что перед }

Ничего себе сравнение
Устал тебе объяснять. Код выполняется между {}. Если это конструктор, то в начале, если обработчик - то в конце!
...
Рейтинг: 0 / 0
11.04.2017, 22:04
    #39436850
hVostt
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Что означает base(name)?
Cat2Устал тебе объяснять. Код выполняется между {}. Если это конструктор, то в начале, если обработчик - то в конце!

Ты очень подробно всё объяснил, спасибо
...
Рейтинг: 0 / 0
12.04.2017, 17:43
    #39437468
ЕвгенийВ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Что означает base(name)?
Shocker.Proдык
вызов конструктора базового класса
Вызов конструктора базового класса с параметром типа string, у базового может быть 100500 конструкторов.
...
Рейтинг: 0 / 0
12.04.2017, 18:02
    #39437484
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Что означает base(name)?
ЕвгенийВВызов конструктора базового класса с параметром типа stringили параметром типа object, или параметром типа IEnumerable<char> раз уж быть таким въедливым.
...
Рейтинг: 0 / 0
12.04.2017, 18:32
    #39437497
hVostt
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Что означает base(name)?
Shocker.Pro,

не, object не покатит
...
Рейтинг: 0 / 0
13.04.2017, 11:26
    #39437819
Arm79
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Что означает base(name)?
Cat2hVosttпропущено...


Ничего себе сравнение
Устал тебе объяснять. Код выполняется между {}. Если это конструктор, то в начале, если обработчик - то в конце!
...
Рейтинг: 0 / 0
13.04.2017, 12:39
    #39437870
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Что означает base(name)?
hVosttне, object не покатит с чего это?
...
Рейтинг: 0 / 0
13.04.2017, 13:07
    #39437897
Сон Веры Павловны
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Что означает base(name)?
Shocker.ProhVosttне, object не покатит с чего это?
Потому что string унаследован от object, а не наборот:
Код: c#
1.
2.
Console.WriteLine(typeof(string).IsAssignableFrom(typeof(object)));
Console.WriteLine(typeof(object).IsAssignableFrom(typeof(string)));


Код: plaintext
1.
False
True
И IEnumerable<char> не прокатит по той же причине.
...
Рейтинг: 0 / 0
13.04.2017, 13:09
    #39437899
Сон Веры Павловны
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Что означает base(name)?
Ну, и поскольку тип string финализирован, то ничего кроме стринга и не прокатит.
...
Рейтинг: 0 / 0
13.04.2017, 13:27
    #39437918
hVostt
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Что означает base(name)?
Сон Веры ПавловныИ IEnumerable<char> не прокатит по той же причине.

да, точняк, я как-то забываю, что в C# нет неявного приведения типов через конструктор, как в C++
...
Рейтинг: 0 / 0
13.04.2017, 14:37
    #39437965
refreg
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Что означает base(name)?
hVostt,

То есть так работать не будет?
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
    class A
    {
        public A(object s)
        {
            Console.WriteLine($"A: {s}");
        }
    }

    class B : A
    {
        public B(string name) : base(name)
        {
            Console.WriteLine($"B: {name}");
        }
    }

    class Program
    {
        static void Main(string[] args)
        {
            new B("abc");
        }
    }

Или Вы о чем спорите?
...
Рейтинг: 0 / 0
13.04.2017, 14:42
    #39437969
Сон Веры Павловны
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Что означает base(name)?
refreghVostt,

То есть так работать не будет?
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
    class A
    {
        public A(object s)
        {
            Console.WriteLine($"A: {s}");
        }
    }

    class B : A
    {
        public B(string name) : base(name)
        {
            Console.WriteLine($"B: {name}");
        }
    }

    class Program
    {
        static void Main(string[] args)
        {
            new B("abc");
        }
    }

Или Вы о чем спорите?
Так будет, не будет наоборот - когда в параметре конструктора базового класса string. Как в первом постинге.
...
Рейтинг: 0 / 0
13.04.2017, 14:54
    #39437979
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Что означает base(name)?
ЕвгенийВВызов конструктора базового класса с параметром типа string Shocker.Proили параметром типа object, или параметром типа IEnumerable<char>hVosttне, object не покатитСон Веры ПавловныТак будет, не будет наоборотЯ разве что-то говорил про наоборот? Базовый конструктор может быть с параметром типа object или любого интерфейса, который реализуется в string.
...
Рейтинг: 0 / 0
13.04.2017, 14:56
    #39437983
refreg
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Что означает base(name)?
Сон Веры ПавловныТак будет, не будет наоборот - когда в параметре конструктора базового класса string. Как в первом постинге.
Ну тогда внимательно прочитайте 20395464
Где там про "наоборот"
...
Рейтинг: 0 / 0
13.04.2017, 14:59
    #39437985
Сон Веры Павловны
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Что означает base(name)?
Я лично там вижу вызов констркутора базового класса, у которого в параметрах стринг, и в который пытаются передать object и IEnumerable<char>. Судя по тому, что hVostt написал "object не покатит", я не один такой.
...
Рейтинг: 0 / 0
13.04.2017, 15:24
    #39438005
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Что означает base(name)?
Сон Веры Павловны,

ты видишь как-то наоборот )))

Изначальный посыл ЕвгенийВ был такой:ЕвгенийВВызов конструктора базового класса с параметром типа string, у базового может быть 100500 конструкторов.то есть речь шла именно о базовом конструкторе и ЕГО параметрах
...
Рейтинг: 0 / 0
13.04.2017, 16:10
    #39438072
hVostt
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Что означает base(name)?
Shocker.ProЯ разве что-то говорил про наоборот? Базовый конструктор может быть с параметром типа object или любого интерфейса, который реализуется в string.

Да, таки ты говорил наоборот.

Shocker.ProЕвгенийВВызов конструктора базового класса с параметром типа stringили параметром типа object, или параметром типа IEnumerable<char> раз уж быть таким въедливым.

Нельзя Вызов конструктора базового класса перепутать с переделыванием этого конструктора, поменяв тип аргумента со string на object, для того, чтобы сунуть ему object или IEnumerable<char>. Ну никак нельзя, даже сильно упившись.
...
Рейтинг: 0 / 0
13.04.2017, 16:14
    #39438079
hVostt
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Что означает base(name)?
Shocker.Pro,

А так как речь шла о string, а ты предложил object или IEnumerable<char>, то тут не может быть никаких разночтений. Ибо тогда, раз уж на то пошло, то можно не только эти типы в конструкторе базового класса воткнуть, но и вообще абсолютно любой тип, и гораздо больше аргументов, и в чём смысл данного капитанского комментария?
...
Рейтинг: 0 / 0
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Что означает base(name)? / 25 сообщений из 31, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]