powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / C#: Реально такой трюк провернуть? (вопрос простой, код внутри)
25 сообщений из 71, страница 1 из 3
C#: Реально такой трюк провернуть? (вопрос простой, код внутри)
    #39313044
Charles Weyland
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Имеется два класса: DataTable и DataTableExt:
Код: 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.
    public class DataTableExt: DataTable
    {
        string addfield;
        //--------------------------------------------------------------
        //Обязательно все 4 конструктора переписывать, чтобы они были в DataTableExt?
        //Или есть "волшебный" способ обозначить, что у DataTableExt все те же конструкторы, что и у DataTable?
        public DataTableExt()
            : base()
        {
        }
        public DataTableExt(string tableName)
            : base(tableName)
        {
        }
        public DataTableExt(string tableName, string tableNameSpace)
            : base(tableName, tableNameSpace)
        {
        }
        public DataTableExt(System.Runtime.Serialization.SerializationInfo info
            , System.Runtime.Serialization.StreamingContext context)
            : base(info, context)
        {
        }
        //--------------------------------------------------------------
        //вопрос по пятому конструктору:
        //как бы так сделать, чтобы что-то подобное работало:
        public DataTableExt(DataTable dataTable, string AdditionalField)
            : base()
        {
            this = dataTable; //т.е. создаваемый объект DataTableExt должен быть, по сути, 
                              //копией ранее созданного объекта DataTable
            this.addfield = AdditionalField;
        }
        //или в этом конструкторе придётся вручную создавать все столбцы, являющиеся копиями таблицы dataTable и переносить данные в цикле? (вроде, бред какой-то...)
    }
...
Рейтинг: 0 / 0
C#: Реально такой трюк провернуть? (вопрос простой, код внутри)
    #39313048
JVF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Charles Weyland,

конструкторы имеют область видимости public и доступны в базовом классе. переписывать не нужно.
...
Рейтинг: 0 / 0
C#: Реально такой трюк провернуть? (вопрос простой, код внутри)
    #39313049
Charles Weyland
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
действительно... мог бы и экспериментальным путём догадаться.
На самом деле основной вопрос состоит в том, что выделено красным.
...
Рейтинг: 0 / 0
C#: Реально такой трюк провернуть? (вопрос простой, код внутри)
    #39313054
JVF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: c#
1.
2.
3.
4.
5.
6.
7.
Public Function Copy() As System.Data.DataTable
     Member of System.Data.DataTable
Summary:
Copies both the structure and data for this System.Data.DataTable.

Return Values:
A new System.Data.DataTable with the same structure (table schemas and constraints) and data as this System.Data.DataTable.If these classes have been derived, the copy will also be of the same derived classes.Both the System.Data.DataTable.Copy and the System.Data.DataTable.Clone methods create a new DataTable with the same structure as the original DataTable. The new DataTable created by the System.Data.DataTable.Copy method has the same set of DataRows as the original table, but the new DataTable created by the System.Data.DataTable.Clone method does not contain any DataRows.
...
Рейтинг: 0 / 0
C#: Реально такой трюк провернуть? (вопрос простой, код внутри)
    #39313185
Фотография ЕвгенийВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JVFCharles Weyland,

конструкторы имеют область видимости public и доступны в базовом классе. переписывать не нужно.
Ога, Ога!!
Не наследуются конструкторы в C#.
Учи матчасть и не советуй глупостей.
...
Рейтинг: 0 / 0
C#: Реально такой трюк провернуть? (вопрос простой, код внутри)
    #39313199
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
разделите конструирование и инициализацию - и ни в сём себе не отказывайте
...
Рейтинг: 0 / 0
C#: Реально такой трюк провернуть? (вопрос простой, код внутри)
    #39313693
JVF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЕвгенийВОга, Ога!!
Не наследуются конструкторы в C#.ты хоть понял, что сказал? в новом классе отсутствуют конструкторы базового? лаврова на тебя нет
...
Рейтинг: 0 / 0
C#: Реально такой трюк провернуть? (вопрос простой, код внутри)
    #39313728
Фотография Axeleron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Charles Weyland
Код: c#
1.
//или в этом конструкторе придётся вручную создавать все столбцы, являющиеся копиями таблицы dataTable и переносить данные в цикле? (вроде, бред какой-то...)


Нет, просто выкинуть DataTable и забыть об этом анахронизме начала века.
...
Рейтинг: 0 / 0
C#: Реально такой трюк провернуть? (вопрос простой, код внутри)
    #39313735
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Axeleron,

и чем заменить прикажете?
...
Рейтинг: 0 / 0
C#: Реально такой трюк провернуть? (вопрос простой, код внутри)
    #39313736
JVF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AxeleronНет, просто выкинуть DataTable и забыть об этом анахронизме начала века.а очеты на чем делать? на LINQ-e штоли?
...
Рейтинг: 0 / 0
C#: Реально такой трюк провернуть? (вопрос простой, код внутри)
    #39313759
Фотография ЕвгенийВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JVFЕвгенийВОга, Ога!!
Не наследуются конструкторы в C#.ты хоть понял, что сказал? в новом классе отсутствуют конструкторы базового? лаврова на тебя нет
Наберут по объявлению, а потом еще 200 тыщ хотят! Кошмар! Срамота!
https://msdn.microsoft.com/ru-ru/library/ms173149.aspx
...
Рейтинг: 0 / 0
C#: Реально такой трюк провернуть? (вопрос простой, код внутри)
    #39313767
JVF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЕвгенийВ,

Хорошо, что сия фраза "Не наследуются конструкторы в C#" тогда означала? В производном классе наследуются все члены базового и конструкторы в том числе.
...
Рейтинг: 0 / 0
C#: Реально такой трюк провернуть? (вопрос простой, код внутри)
    #39313779
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DataTable поддерживает сериалиацию, можно сериалиовать, а потом десериалиовать DataTable И получится копия :D
...
Рейтинг: 0 / 0
C#: Реально такой трюк провернуть? (вопрос простой, код внутри)
    #39313794
Фотография ЕвгенийВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JVFЕвгенийВ,

Хорошо, что сия фраза "Не наследуются конструкторы в C#" тогда означала? В производном классе наследуются все члены базового и конструкторы в том числе.
То что конструкторы НЕ НАСЛЕДУЮТСЯ!
В конструкторе дочернего ты можешь вызвать любой конструктор базового, если позволяет его видимость и любой свой, если это не приведет к циклу.
Но дочерний ты можешь создать только используя конструкторы его самого, но ни как не базового!
...
Рейтинг: 0 / 0
C#: Реально такой трюк провернуть? (вопрос простой, код внутри)
    #39313872
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JVFAxeleronНет, просто выкинуть DataTable и забыть об этом анахронизме начала века.а очеты на чем делать? на LINQ-e штоли?
А в чем DataTable выгодно отличается для построения отчётов от других классов?
...
Рейтинг: 0 / 0
C#: Реально такой трюк провернуть? (вопрос простой, код внутри)
    #39313875
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Roman MejtesDataTable поддерживает сериалиацию, можно сериалиовать, а потом десериалиовать DataTable И получится копия :D
Зачем, когда есть метод Copy?

https://msdn.microsoft.com/ru-ru/library/564wf598(v=vs.110).aspx
...
Рейтинг: 0 / 0
C#: Реально такой трюк провернуть? (вопрос простой, код внутри)
    #39314187
TheBatya
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ЕвгенийВ,

Код: 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.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApplication2
{



    class A
    {
        public A()
        {
            System.Console.WriteLine("is A");
        }
    }

    class B : A
    {
    }


    class Program
    {
        static void Main(string[] args)
        {
            B b = new B();
            System.Console.ReadLine();
        }
    }
}



Console:
is A
...
Рейтинг: 0 / 0
C#: Реально такой трюк провернуть? (вопрос простой, код внутри)
    #39314191
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TheBatyaЕвгенийВ,
Console:

is A
ну и какой практический смысл этого примера?
...
Рейтинг: 0 / 0
C#: Реально такой трюк провернуть? (вопрос простой, код внутри)
    #39314203
TheBatya
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Roman Mejtes,

Это был ответ ЕвгенийюВ, который утверждал что конструкторы не наследуются
...
Рейтинг: 0 / 0
C#: Реально такой трюк провернуть? (вопрос простой, код внутри)
    #39314205
Charles Weyland
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TheBatyaConsole:
is A
и что?)
это вообще не показательно.
Вот показательно
Код: 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.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApplication2
{
    class A
    {
        public A(string a)
        {
            System.Console.WriteLine(a);
        }
    }

    class B : A
    {
    }


    class Program
    {
        static void Main(string[] args)
        {
            B b = new B("hi");
            System.Console.ReadLine();
        }
    }
}
...
Рейтинг: 0 / 0
C#: Реально такой трюк провернуть? (вопрос простой, код внутри)
    #39314232
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Charles WeylandВот показательно
И что тут показательно? Показательно не компилируется. Пишет что нет такого конструктора у B
...
Рейтинг: 0 / 0
C#: Реально такой трюк провернуть? (вопрос простой, код внутри)
    #39314245
Charles Weyland
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima TИ что тут показательно? Показательно не компилируется. Пишет что нет такого конструктора у B
Да, именно это и показательно, а то пишут тут всякие:
Dima TCharles Weyland,
конструкторы имеют область видимости public и доступны в базовом классе. переписывать не нужно.
...
Рейтинг: 0 / 0
C#: Реально такой трюк провернуть? (вопрос простой, код внутри)
    #39314258
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Charles WeylandDima TИ что тут показательно? Показательно не компилируется. Пишет что нет такого конструктора у B
Да, именно это и показательно, а то пишут тут всякие:
Dima TCharles Weyland,
конструкторы имеют область видимости public и доступны в базовом классе. переписывать не нужно.
Это не я писал.
В целом правильно пишут. Правда забыли добавить что надо явно вызов прописать
Код: c#
1.
2.
3.
    class B : A    {
			public B(string b) : base(b)  { }
}
...
Рейтинг: 0 / 0
C#: Реально такой трюк провернуть? (вопрос простой, код внутри)
    #39314268
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Charles Weyland
Код: c#
1.
2.
        //Обязательно все 4 конструктора переписывать, чтобы они были в DataTableExt?
        //Или есть "волшебный" способ обозначить, что у DataTableExt все те же конструкторы, что и у DataTable?


Извиняюсь, по диагонали топик читал, надо прописывать.
...
Рейтинг: 0 / 0
C#: Реально такой трюк провернуть? (вопрос простой, код внутри)
    #39314412
Фотография ЕвгенийВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TheBatyaЕвгенийВ,

Код: 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.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApplication2
{



    class A
    {
        public A()
        {
            System.Console.WriteLine("is A");
        }
    }

    class B : A
    {
    }


    class Program
    {
        static void Main(string[] args)
        {
            B b = new B();
            System.Console.ReadLine();
        }
    }
}



Console:
is A
Это доказывает только то, что совсем не рубите матчасть, а хотите получать 250. Кошмар! Срамота!
если не прописано явно конструкторов, то компилятор генерит публичный конструктор без параметров по умолчанию

если явно не указан вызов конструктора базового класса, то компилятор генерит вызов конструктора по умолчанию базового класса, для всех таки конструкторов наследника

Попробуй в А сделать конструктор приватным и получишь малатком по башке пальцам от компилятора
...
Рейтинг: 0 / 0
25 сообщений из 71, страница 1 из 3
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / C#: Реально такой трюк провернуть? (вопрос простой, код внутри)
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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