CS0451 de erro do compilador

Mensagem de erro

A restrição 'new()' não pode ser usada com a restrição 'struct'

Ao especificar restrições no tipo de um genérico, o new() restrição pode ser usada somente com restrições de tipo de classe, restrições de tipo de interface, restrições de tipo de referência e restrições de parâmetro de tipo, mas não com restrições de tipo de valor.

Exemplo

O exemplo a seguir gera CS0451.

// CS0451.cs
using System;
public class C4 
{
   public void F4<T>() where T : struct, new() {}   // CS0451
}

// OK
public class C5
{
   public void F5<T>() where T : struct {}
}

public class C6
{
   public void F6<T>() where T : new() {}
}