A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 乔利柱 中级黑马   /  2012-10-21 15:58  /  2257 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 乔利柱 于 2012-10-22 09:54 编辑

     int.tryparse(str , out  *);
我感觉这个东西好像就是把一个string转换成int类型的。但是,这个方法必须有两个参数,必须写成类似这样的int.TryParse(str , out  * ),其中的*应该用已经定义过的int类型对象,str是要转换成int类型的对象。但是,我自己每次写的时候,都不知道这个out后面的东西到底要怎样写?写什么?有什么意思?

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

5 个回复

倒序浏览
int i=0;
if(int.TryParse("abc",out i)){转换成功,i就是要的值}

评分

参与人数 2技术分 +1 黑马币 +20 收起 理由
宋天琪 + 1
乔利柱 + 20 赞一个!

查看全部评分

回复 使用道具 举报
int.tryparse(str , out  *);意思是把字符串转换为int型。
例如:
string str =“1234”;
int i=0;
int.tryparse(str , out  i);转换后i=1234
说明:
1.out代表输出参数。参数i必须赋初始值。2.tryparse转换失败不会对外抛出异常。

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
本帖最后由 ♂张耕明 于 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;
            }         
        }
    }

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
作用:类型转换,简单的理解为:尝试(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,可以换转类型,与此同学判断它是否为指定类型

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
楼主可能是不理解out的意思。建议去看下out和ref关键字的用处。out用在方法里可以对外传参。如果不用out和ref时,一个方法只能传一个或者一种类型的参数。但用了out和ref,就可以传不同类型的参数出去了。前提是,这个参数不能是匿名的。

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马