135 votes

C# erreur de chaîne nullable

<pre><code></code><p>Plus tard dans le code je l’utilise comme ceci :</p><pre><code></code></pre><p>Je reçois l’erreur suivante à la déclaration de typeOfContract ligne indiquant « le type « string » doit être un type valeur non nullable afin d’être utilisé comme paramètre ' t ' dans le type générique ou la méthode « System.Nullable » »</p><p>Toutes les idées ? Fondamentalement, je veux que « type » existe dans la chaîne de requête avant d’effectuer une action.</p></pre>

303voto

Joe Points 60749

System.String est un type de référence et est déjà "nullable".

Nullable <T> et le? le suffixe concerne les types de valeur tels que Int32, Double, DateTime, etc.

38voto

jop Points 31978

Vous faites les choses compliquées. string est déjà nul. Vous n'avez pas besoin de le rendre plus nullable. Prenez le ? sur le type de propriété.

19voto

Szymon Rozga Points 11277

string ne peut pas être le paramètre de Nullable car string n'est pas un type de valeur. String est un type de référence.

 string s = null;
 

est une déclaration très valide et il n'est pas nécessaire de la rendre nullable.

 private string typeOfContract
    {
      get { return ViewState["typeOfContract"] as string; }
      set { ViewState["typeOfContract"] = value; }
    }
 

devrait fonctionner à cause du mot-clé as .

13voto

csgero Points 2061

String est un type de référence, vous n'avez donc pas besoin (et vous ne pouvez pas) utiliser Nullable<T> ici. Déclarez simplement typeOfContract en tant que chaîne et vérifiez simplement la valeur null après l'avoir obtenue de la chaîne de requête. Ou utilisez String.IsNullOrEmpty si vous souhaitez gérer les mêmes valeurs de chaîne vide que null.

4voto

VenomFangs Points 2222

Pour nullable, utilisez ? avec toutes les primitives C # , à l'exception de la chaîne.

Ce qui suit donne la liste des primitives C # : http://msdn.microsoft.com/en-us/library/aa711900(v=vs.71).aspx

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X