0
votes

Convertir une chaîne en int, puis transmettre cette valeur à une chaîne

Existe-t-il un moyen plus simple d'ajouter 3 chaînes ensemble en les analysant comme des entiers, puis en transmettant la valeur résultante à une chaîne?

Par exemple:

public string SumVal;
public string val_1;
public string val_2;
public string val_3;

void Start()
{
    SumVal = int.Parse(val_1) + int.Parse(val_2) + int.Parse(val_3);
}


5 commentaires

cela donnera une erreur de compilation


basé sur ce stackoverflow .com / questions / 31711326 /… il n'y a pas de meilleur moyen


L'interpolation de chaîne irait mieux je pense


@NaveedYousaf définir "meilleur" (et aussi OP définir "plus simple") ... en lisibilité? Dans la maintenabilité? En étant à sécurité intégrée? En performance / efficacité? ...;)


@derHugo J'imagine qu'effectuer beaucoup d'opérations telles que la conversion de chaînes en entiers, puis de nouveau en chaîne, cela prend beaucoup de puissance de traitement si les valeurs sont en 100. Je cherchais donc un moyen plus simple sans convertir chaque chaîne en int.


3 Réponses :


0
votes

Ah, il ne m'est pas venu à l'esprit que je peux ajouter les trois valeurs à l'intérieur d'un crochet et le passer à ToString (). Mais il semble que cela ne puisse pas être plus simple que cela.

SumVal = (int.Parse(val_1) + int.Parse(val_2) + int.Parse(val_3)).ToString();


1 commentaires

Cela ne fonctionnera que si vos val_1, val_2 et val_3 contiennent toujours des valeurs entières. Si l'un d'eux n'est pas un entier, vous obtenez une exception System.FormatException.



1
votes

Utiliser l'interpolation de chaîne

SumVal = $"{int.Parse(val_1)+int.Parse(val_2)+int.Parse(val_3)}";


0 commentaires

2
votes

Vous devez prendre soin du cas si la chaîne n'est pas convertible en int également sinon elle donnera une exception (System.FormatException: 'La chaîne d'entrée n'était pas dans un format correct.').

int x;
int y;
int z;
bool b = int.TryParse(val_1, out x);
int.TryParse(val_2, out y);
int.TryParse(val_3, out z);

SumVal = (x + y + z).ToString();


4 commentaires

Où en prenez-vous soin? ;-)


parce que la valeur par défaut de int est 0 donc cela vous donnera 0, mais encore une fois ce ne sera pas une solution parfaite


Alors peut-être devriez-vous au moins lancer un avertissement if (! Int.TryParse (val_2, out var y) {Debug.LogWarning ($ "Impossible d'analyser Y avec l'entrée \" {val_2} \ "");} < / code>


... ou mieux, construisez-le robuste et propre, ce qui comprend l'éducation des OP sur la façon de le faire ;-)