Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / WinForms, .Net Framework Новый топик    Ответить
 Объясните плиз что это означает  [new]
iskatelsql
Member

Откуда:
Сообщений: 867
Нашел на просторах некоторый код:

public static T ToStructure<T>(byte[] data)
{
    unsafe
    {
        fixed (byte* p = &data[0])
        {
            return (T)Marshal.PtrToStructure(new IntPtr(p), typeof(T));
        }
    };
}

public static T Read<T>(BinaryReader reader) where T : new()
{
    T instance = new T();
    return ToStructure<T>(reader.ReadBytes(Marshal.SizeOf(instance)));
}


Что означает where T : new() в объявлении ф-ции Read? Первый раз такое вижу.
10 июн 21, 18:18    [22334007]     Ответить | Цитировать Сообщить модератору
 Re: Объясните плиз что это означает  [new]
Antonariy
Member

Откуда: ☭
Сообщений: 72988
Это означает, что T должен иметь публичный конструктор без аргументов, иначе new T() обломается.

Сообщение было отредактировано: 10 июн 21, 18:13
10 июн 21, 18:20    [22334011]     Ответить | Цитировать Сообщить модератору
 Re: Объясните плиз что это означает  [new]
Antonariy
Member

Откуда: ☭
Сообщений: 72988
Тут можно ознакомиться: https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/keywords/where-generic-type-constraint
10 июн 21, 18:23    [22334016]     Ответить | Цитировать Сообщить модератору
 Re: Объясните плиз что это означает  [new]
iskatelsql
Member

Откуда:
Сообщений: 867
Antonariy,

Спасибо, только хотел спросить где почитать... Обновил страницу и все есть :)

Сообщение было отредактировано: 10 июн 21, 18:17
10 июн 21, 18:25    [22334019]     Ответить | Цитировать Сообщить модератору
Все форумы / WinForms, .Net Framework Ответить