powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Как понимать такое объявление классов?
6 сообщений из 6, страница 1 из 1
Как понимать такое объявление классов?
    #39198193
Ролг Хупин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть два класса

Код: c#
1.
2.
public abstract class Settings<T> : Settings where T : class //<----? (1)
public abstract class Settings : INotifyPropertyChanged, ISecurableSection




И есть такой класс
Код: c#
1.
public class SQLSettings : Settings<SQLSettings> //<---- (2)



Как понимать эти два места?
1. что значит where T: class?
2. И как класс объявляется исходя из себя же?
...
Рейтинг: 0 / 0
Как понимать такое объявление классов?
    #39198201
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ролг ХупинЕсть два класса

Код: c#
1.
2.
public abstract class Settings<T> : Settings where T : class //<----? (1)
public abstract class Settings : INotifyPropertyChanged, ISecurableSection




И есть такой класс
Код: c#
1.
public class SQLSettings : Settings<SQLSettings> //<---- (2)



Как понимать эти два места?
1. что значит where T: class?
2. И как класс объявляется исходя из себя же?
1. Where T : class - значит для для типа T удовлетворяют условию только классы, но не структуры. То есть качестве параметра типа для Generic класс можно будет указать только тип класса
2. Объявляется класс Settings<T>, а наследуется класс Settings, это 2 разных класса. 1 класс Generic, 2 класс обычный или абстрактный, не знаю
...
Рейтинг: 0 / 0
Как понимать такое объявление классов?
    #39198239
Ролг Хупин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Roman MejtesРолг ХупинЕсть два класса

Код: c#
1.
2.
public abstract class Settings<T> : Settings where T : class //<----? (1)
public abstract class Settings : INotifyPropertyChanged, ISecurableSection




И есть такой класс
Код: c#
1.
public class SQLSettings : Settings<SQLSettings> //<---- (2)



Как понимать эти два места?
1. что значит where T: class?
2. И как класс объявляется исходя из себя же?
1. Where T : class - значит для для типа T удовлетворяют условию только классы, но не структуры. То есть качестве параметра типа для Generic класс можно будет указать только тип класса
2. Объявляется класс Settings<T>, а наследуется класс Settings, это 2 разных класса. 1 класс Generic, 2 класс обычный или абстрактный, не знаю

по 1 ясно, а в случае 2 класс объявляется зависимым от себя же фактически?

public class SQLSettings : Settings<SQLSettings>
...
Рейтинг: 0 / 0
Как понимать такое объявление классов?
    #39198290
Фотография Где-то в степи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ролг Хупин,
вы путаете мягкое с теплым это не одно и то же,
абстрактный и интерфейс равнозначные в понятиях приведу пример на интерфейсе
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
interface IA<T>{
    void beforeUpdate(T t);
}
class B implements IA<B>{
    @Override
    public void beforeUpdate(B b) {
        // TODO: 22.03.2016  проверяем перед обновлением
    }
}
class Action{
    
    public void update(Object o){
        if( o instanceof IA){
            ((IA) o).beforeUpdate(o);
        }
        innerUpdate(o);
    }
    private void innerUpdate(Object o){
        
    }
}
...
Рейтинг: 0 / 0
Как понимать такое объявление классов?
    #39198451
Сон Веры Павловны
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Где-то в степи,

а зачем пример на яве? тут вроде раздел про несколько более другие ЯП.

Ролг Хупин,
выше уже сказали, что просто класс, и генерик-класс с тем же именем - это два разных типа. Даже если нет наследования, вполне можно написать вот такое:
Код: c#
1.
2.
3.
4.
5.
namespace test
{
  class Foo {}
  class Foo<T> {}
}


и это вполне скомпилируется, т.к. Foo и Foo<T> - разные типы. Они могут существовать параллельно, один может наследоваться от другого - всему этому ничего не мешает, т.к. типы разные. В общем, читать Троэлсена или (лучше) Рихтера про генерики.
...
Рейтинг: 0 / 0
Как понимать такое объявление классов?
    #39198644
Фотография ЕвгенийВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ролг Хупин а в случае 2 класс объявляется зависимым от себя же фактически?

Да, этому ничего не мешает, например тут
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
 public class Class1 : IComparable<Class1>
    {
        public int Id { get; set; }
        public string Name { get; set; }

        public int CompareTo(Class1 other)
        {
            if (Id > other.Id)
                return 1;
            if (Id < other.Id)
                return -1;
            return string.Compare(Name, other.Name, StringComparison.Ordinal);
        }
    }


Мы имеем строго типизированный метод CompareTo, который принимает Class1, а не object.
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Как понимать такое объявление классов?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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