Convertir object en int

Signaler
Messages postés
25
Date d'inscription
vendredi 13 juin 2003
Statut
Membre
Dernière intervention
12 mai 2006
-
Messages postés
2368
Date d'inscription
mardi 17 avril 2001
Statut
Modérateur
Dernière intervention
26 décembre 2007
-
Bonjour,

Pour convertir un object en int?

je suis obligé de le convertir en string avant.

Ca marche que comme ca :
mon object s'appelle var

int i = Int32.Parse(var.tostring());

Y'a plus simple?

merci

11 réponses

Messages postés
5487
Date d'inscription
dimanche 4 août 2002
Statut
Modérateur
Dernière intervention
20 juin 2013
47
Salut,
Tu peux faire comme ceci :



object o =
null;

int x = (
int)o;

Mais y'a des risques d'exceptions.
Le mieux, c'est d'utiliser TryParse je pense :


int x =
Int32.TryParse(...);


<HR>

[Pub] http://www.csharpfr.com/auteurdetail.aspx?ID=13319 [\Pub]
C# forever /infomsg/auteurdetail.aspx?ID=13319/auteurdetail.aspx?ID=13319
Messages postés
2375
Date d'inscription
jeudi 12 juillet 2001
Statut
Modérateur
Dernière intervention
15 décembre 2018
20
Cependant attention la méthode TryParse est une nouveauté du framework2 donc pas dispo sous 2002/2003
Messages postés
2368
Date d'inscription
mardi 17 avril 2001
Statut
Modérateur
Dernière intervention
26 décembre 2007
14
Il y a le TryParse sur le double en 1.1 de mémoire. Et le TryParse parcours chaque charactère 1par 1. Tu peux faire un Try Catch sur le FormatException.

::|The S@ib|:: MVP C#.NET
Messages postés
38
Date d'inscription
vendredi 31 mai 2002
Statut
Membre
Dernière intervention
6 juillet 2011

Il existe également le mot clé as qui permet de caster également ton object en int. L'avantage de ce mot clé réside dans le fait que, si le casting ne peut se faire, aucune exception n'est lancée et ton objet de destination vaudra null.

Exemple :
object o;
...
int n = o as int;

Donc, si la conversion a pu se faire, n sera différent de null.

Seb.
Messages postés
5487
Date d'inscription
dimanche 4 août 2002
Statut
Modérateur
Dernière intervention
20 juin 2013
47
Non, ce n'est pas juste, l'operator as ne marche que sur les reference type et pas sur les value type.
Or, int est un value type (tu as un déjà vu un int qui est null? A la limite, avec le framework 2 si on a un int?)





<HR SIZE= 2>
VC# forever
=13319
Messages postés
38
Date d'inscription
vendredi 31 mai 2002
Statut
Membre
Dernière intervention
6 juillet 2011

Effectivement, je n'avais pas bien fait cette différence.
Veuillez me pardonner.

Seb.
Messages postés
8
Date d'inscription
jeudi 22 juillet 2004
Statut
Membre
Dernière intervention
20 décembre 2006

Bonjour à tous.

Je rencontre actuellement le même problème.Je crée un nouvel objet et j'aimerai le remplir avec un entier.Ne trouvant pas de solution,j'ai choisi de le faire avec un string mais je ne sais même pas si le code est bon :

            object ArrayElementCount = new string[1] {"0"};

Ce que j'aimerai en fait faire,c'est déclarer le nouvel objet "ArrayElementCount" et mettre un entier dedans que j'appelerai ensuite dans une fonction qui le reçoit en paramètre.

Si quelqu'un pouvait m'aider.

Merci à vous.

Youss
Messages postés
5487
Date d'inscription
dimanche 4 août 2002
Statut
Modérateur
Dernière intervention
20 juin 2013
47
Pourquoi un object et pas un int? ( int x = 0; )
Ou à la limite un tableau de int si tu dois en avoir plusieurs ( int[] x = new int[] {0}; )

<hr size="2" />VC# forever
Messages postés
8
Date d'inscription
jeudi 22 juillet 2004
Statut
Membre
Dernière intervention
20 décembre 2006

Un objet parce que ma fonction ne reçoit exclusivement qu'un objet en paramètre.Sinon,oui j'aurai pris un int,c'est ce qu'il y'a de plus simple en programmation.

Youss
Messages postés
1
Date d'inscription
mercredi 13 septembre 2006
Statut
Membre
Dernière intervention
13 septembre 2006

Salut tous le monde,
je rencontre le meme probleme actuellement et j'ai essayé de le résoudre avec toutes les solutions proposer mais toujours la meme exception est lancée " Input string was not in a correct format" voici la partie du code source
"int
id Convert.ToInt32(Request["id"].ToString());DataTable dt (DataTable) Session["panier"];

dt.Rows.RemoveAt(id);

for (
int i=0; i< dt.Rows.Count; i++){

dt.Rows[i]["index"] = i;

}

int ptttc=0;

for (
int i= 0; i<dt.Rows.Count; i++){
int ptc Convert.ToInt32(dt.Rows[i]["puttc"].ToString()) ; //le probleme est iciptttc ptttc + ptc;

}

Session["total"]=ptttc.ToString();

 

Session["panier"] = dt;

 

Response.Redirect("panier.aspx");

et l'exception est

"

<h1>Server Error in '/' Application.
<hr width="100%" color="silver" size="1" />
Input string was not in a correct format.
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.

Exception Details: System.FormatException: Input string was not in a correct format.

Source Error:

An unhandled exception was generated during the execution of the current web request. Information regarding the origin and location of the exception can be identified using the exception stack trace below.


Stack Trace:


[FormatException: Input string was not in a correct format.]
System.Number.ParseInt32(String s, NumberStyles style, NumberFormatInfo info) +0
System.Int32.Parse(String s) +38
smartech.makina.deletefromcart.Button2_Click(Object sender, EventArgs e)
System.Web.UI.WebControls.Button.OnClick(EventArgs e) +108
System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument) +57
System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) +18
System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) +33
System.Web.UI.Page.ProcessRequestMain() +1292



<hr width ="100%" color= "silver" size="1" /> Version Information:  Microsoft .NET Framework Version:1.1.4322.2032; ASP.NET Version:1.1.4322.2032

<!--
[FormatException]: Input string was not in a correct format.
at System.Number.ParseInt32(String s, NumberStyles style, NumberFormatInfo info)
at System.Int32.Parse(String s)
at smartech.makina.deletefromcart.Button2_Click(Object sender, EventArgs e)
at System.Web.UI.WebControls.Button.OnClick(EventArgs e)
at System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument)
at System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument)
at System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData)
at System.Web.UI.Page.ProcessRequestMain()
[HttpUnhandledException]: Exception of type System.Web.HttpUnhandledException was thrown.
at System.Web.UI.Page.HandleError(Exception e)
at System.Web.UI.Page.ProcessRequestMain()
at System.Web.UI.Page.ProcessRequest()
at System.Web.UI.Page.ProcessRequest(HttpContext context)
at System.Web.CallHandlerExecutionStep.System.Web.HttpApplication+IExecutionStep.Execute()
at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously)
--><!--
This error page might contain sensitive information because ASP.NET is configured to show verbose error messages using <customErrors mode ="Off"/>. Consider using <customErrors mode="On"/> or <customErrors mode="RemoteOnly"/> in production environments.-->le langage utilisé est le C#

merci d'avance pour votre Aide et j'espère que il ya une personne qui a la solution

@er

</h2>
Messages postés
2368
Date d'inscription
mardi 17 avril 2001
Statut
Modérateur
Dernière intervention
26 décembre 2007
14
Quelle valeur à ton puttc ?

Si tu as une chaine vide ou que ton puttc contien autre chose que des chiffres c'est normal.

::|The S@ib|:: MVP C#.NET