2011-03-12 5 views
1

Y at-il un moyen de le faire en C# sans faire une nouvelle méthode à surcharger pour chaque type de var qu'il y a?C# short if instruction

$box = !empty($toy) : $toy ? ""; 

La seule façon que je peux penser à le faire est soit:

if (toy != null) 
{ 
    box += toy; 
} 

ou ceci:

public string emptyFilter(string s) ... 
public int emptyFilter(int i) ... 
public bool emptyFilter(bool b) ... 
public object emptyFilter(object o) 
{ 
    try 
    { 
     if (o != null) 
     { 
      return o.ToString(); 
     } 
     else 
     { 
      return ""; 
     } 
    } 
    catch (Exception ex) 
    { 
     return "exception thrown": 
    } 
} 

box += this.emptyFilter(toy); 

je vérifie essentiellement veux pour vous assurer que la variable/propriété est set/non vide/existe/a valeur/etc ... et le retourne ou "" sans quelque chose de ridicule de code comme ci-dessus.

+0

Utilisez Génériques pour créer une fonction qui peut accepter un type de T. – Brownman98

+1

Il est difficile de proposer une solution, car on ne sait pas ce que vous essayez d'accomplir. Aussi, que veut dire "chaque type de var"? – Jon

+0

in C#: String.Empty + null == String.Empty – xanatos

Répondre

9
return variable ?? default_value; 

Que faites-vous? Je suis un peu confus compte tenu du fait que vous montrez du code PHP et que vous le marquez avec C#. Il existe également le type Nullable<T> que vous pouvez utiliser.


Comment une classe d'extension?

public static class ToStringExtender 
{ 
    public static String ToStringExt(this Object myObj) 
    { 
    return myObj != null ? myObj.ToString() : String.Empty; 
    } 
} 

var myobject = foo.ToStringExt() 

DEMO

+0

Il veut connaître l'équivalent C# pour l'exemple PHP. – BoltClock

+0

@BoltClock: Ah, genre de commencer à le voir maintenant. –

+0

J'utilisais juste la version abrégée PHP comme exemple car je la connais. Tout moyen de le faire rapidement en C# serait le bienvenu. Puis-je le faire avec cette 'box + = var ?? def'? Je ne veux pas d'exceptions levées. – PiZzL3

18

Vous pouvez utiliser le conditional operator (?:):

string box = (toy != null) ? toy.ToString() : ""; 
+0

'a? B: c' pas' a: b? C' – CodesInChaos

+0

lol, eh bien c'est pas si simple .. C'est incroyable comme la plupart des langages de programmation sont similaires. – PiZzL3

1

Je ne suis pas sûr de ce qu'il veut, mais:

string str = String.Empty; 
str += true; 
str += 5; 
str += new object(); 
str += null; 

Ceci est parfaitement légal . Pour chaque adition, le ToString() sera appelé. Pour null, rien ne sera simplement ajouté.

La valeur de str à la fin: True5System.Object

0

ou,

var s = (toy?? "").ToString(); 

ou

var s = (toy?? string.Empty).ToString(); 
0

je pense qu'il peut y avoir un léger malentendu sur la façon dont var est utilisé; mais c'est un sujet distinct. peut-être ce ci-dessous aider:

box += (toy ?? "").ToString();