C# court si l'instruction
Est-il un moyen de le faire en C# sans faire une nouvelle méthode de surcharge pour chaque var type y est?
$box = !empty($toy) : $toy ? "";
La seule façon que je peux penser à faire c'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);
En gros, je veux vérifier que la variable/propriété est/n'est pas vide/existe/a de la valeur/etc... et de le retourner ou "", sans ridicule sur de code comme ci-dessus.
- Utiliser des Génériques pour créer une fonction qui peut accepter un type de T.
- Il est difficile de proposer une solution parce que c'est pas clair ce que vous essayez d'accomplir. Aussi, ce n' "chaque var genre il y a" signifie?
- en C#: String.Vide + null == Chaîne de caractères.Vide
- En C#, vous devez définir le type de toutes les variables/objets/etc. Dans l'un de mes exemples ci-dessus, j'ai fait une méthode qui pourrait être surchargé pour chaque type (int, string, etc..). Je suis en train de vérifier si une valeur existe avec très peu de code de sorte qu'il ne lance pas d'exception. Si je viens de le faire
box += toy;
et jouet est null, une exception sera levée. Mes 2 exemples ci-dessus sont juste trop de code que j'ai fais+ de 50 fois dans la même fonction.
Vous devez vous connecter pour publier un commentaire.
Que ce que vous allez pour? Je suis un peu confus étant donné que vous êtes montrant code PHP tag et ce avec C#.
Il y a aussi le
Nullable<T>
type que vous pouvez utiliser.Comment combat une unité d'extension de classe?
DÉMO
box += var ?? def
? Je ne veux pas toutes les exceptions levées.Int32
,Double
, etc. par nature, ne sont pas les valeurs null, vous devriez automatiquement leur valeur renvoyée (comme une chaîne de caractères). (Voir ideone.com/wsDk6 )Vous pouvez utiliser le opérateur conditionnel (
?:
):a?b:c
pasa:b?c
Je ne suis pas sûr de ce qu'il veut, MAIS:
C'est parfaitement légal. Pour chaque ajout de la
ToString()
sera appelée. Pour les nuls, tout simplement rien ne sera ajouté.La valeur de str à la fin:
True5System.Object
ou,
ou
je pense qu'il y a peut être un malentendu sur la façon var est utilisé; mais c'est un autre sujet.
peut-être que ce ci-dessous vous aidera à: