Errore del compilatore CS0451

Aggiornamento: novembre 2007

Messaggio di errore

Impossibile utilizzare il vincolo 'new()' con il vincolo 'struct'.
The 'new()' constraint cannot be used with the 'struct' constraint

Quando vengono definiti vincoli sul tipo di un oggetto generico, è possibile utilizzare il vincolo new() solo con i vincoli di tipo class, di tipo interface, di tipo reference e del parametro di tipo, non con i vincoli di tipo di valore.

Esempio

Il seguente codice di esempio genera l'errore 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() {}
}