黑马程序员技术交流社区
标题:
int.tryparse()的问题,哪位大侠给指点下!
[打印本页]
作者:
乔利柱
时间:
2012-10-21 15:58
标题:
int.tryparse()的问题,哪位大侠给指点下!
本帖最后由 乔利柱 于 2012-10-22 09:54 编辑
int.tryparse(str , out *);
我感觉这个东西好像就是把一个string转换成int类型的。但是,这个方法必须有两个参数,必须写成类似这样的int.TryParse(str , out * ),其中的*应该用已经定义过的int类型对象,str是要转换成int类型的对象。但是,我自己每次写的时候,都不知道这个out后面的东西到底要怎样写?写什么?有什么意思?
作者:
谷黎明
时间:
2012-10-21 17:20
int.tryparse(str , out *);意思是把字符串转换为int型。
例如:
string str =“1234”;
int i=0;
int.tryparse(str , out i);转换后i=1234
说明:
1.out代表输出参数。参数i必须赋初始值。2.tryparse转换失败不会对外抛出异常。
作者:
♂张耕明
时间:
2012-10-21 19:20
本帖最后由 ♂张耕明 于 2012-10-21 19:25 编辑
这是我还原的TryParse方法内部实现,请多多指教!
class Program
{
static void Main(string[] args)
{
int salary = 5000000;
Program.IntTryParse(Console.ReadLine(),out salary);//加了out,变量可以不赋初值
Console.WriteLine("salary:" + salary);
Console.ReadKey(true);
}
static bool IntTryParse(string source,out int salary)
{
try
{
//Console.WriteLine(salary);/*传进来的参数会被视为未赋值的*/
salary = Convert.ToInt32(source);//使用加out的参数,方法内部必须给参数赋值
return true;
}
catch
{
salary = 0;
return false;
}
}
}
作者:
汪书凯
时间:
2012-10-22 21:42
作用:类型转换,简单的理解为:尝试(try)转换指定类型,如果转换成功返回true,转换失败返回false
使用:
int i;
bool isNumber= int.TryParse("5",out i);//尝试把字符串转为int类型,并存在i中;转换成功时,返回true,否则转为:false
使用tryparse时,需要理解一点就是输出参数out。
这里简单带过,如:
static void Main(string[] args)
{
int num = 1;//给初始值也没用
MyOut(out num);
Console.WriteLine(num.ToString());//输入出
Console.ReadKey();
}
static void MyOut(out int i)
{
i = 2;//使用前必须赋值 i++;
}
执行的原理:
1.声明一个值类型num存于栈中。
2.调用MyOut时,在内存创建一个i,同样存于num所在的栈中
3.i=2时,栈中的数据改为2,同时num也变为2.
如果num为引用类型时,将声明一个堆区用于存数据。栈中存放着num与i的指向到堆中数据。
回过头来看下 int.TryParse("5",out i);
可以用反编译工具查看下内容,这里我就不具体查看了。 简单理解大致是:
1.判断“5”是否为数字类型。
2.如果“5”为数字类型反回true,并且把该值符给i所在的栈。
3.如果“5”不是数字类型返回false。
提示一下,转换的时候,不一定只有int类型。可以有DateTime等。
一般使用TryParse,可以换转类型,与此同学判断它是否为指定类型
作者:
邓艳秋
时间:
2012-10-23 03:30
楼主可能是不理解out的意思。建议去看下out和ref关键字的用处。out用在方法里可以对外传参。如果不用out和ref时,一个方法只能传一个或者一种类型的参数。但用了out和ref,就可以传不同类型的参数出去了。前提是,这个参数不能是匿名的。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2