黑马程序员技术交流社区

标题: 一直困扰的问题~~~~ [打印本页]

作者: yangaidongcumt    时间: 2013-6-12 11:08
标题: 一直困扰的问题~~~~
本帖最后由 yangaidongcumt 于 2013-6-23 15:19 编辑

就是int.Parse("10");为什么int可以点出来方法~~~一直都不知道这是怎么回事,希望知道的可以给详细解释一下,
另外还有这个int.TryParse()方法该如何使用,我记得以前学过,但是现在又不知道怎么用了~~~谢谢大家O(∩_∩)O

作者: 甘斌斌    时间: 2013-6-12 11:11
int为什么可以点处方法来?这没有什么好奇的吧,你邮件单击看看有什么神奇之处。

int.tryParse 应该是尝试着转换吧。
作者: ljh4282158    时间: 2013-6-12 11:15
int 应该是微软封装好的一个方法,方法可以打点调用。
int.TryParse() 可以转换特定的数据类型
           自己理解的,不知道对不对。
作者: yangaidongcumt    时间: 2013-6-12 11:25
ljh4282158 发表于 2013-6-12 11:15
int 应该是微软封装好的一个方法,方法可以打点调用。
int.TryParse() 可以转换特定的数据类型
            ...

第一个问题我知道是怎么回事了:因为int其实就是Int32,Int32是结构,结构中定义了方法,所以就可以点出来了!但是第二个问题有没有什么简单的代码可以示例一下~~
作者: yangaidongcumt    时间: 2013-6-12 11:26
甘斌斌 发表于 2013-6-12 11:11
int为什么可以点处方法来?这没有什么好奇的吧,你邮件单击看看有什么神奇之处。

int.tryParse 应该是尝试 ...

第一个问题我知道是怎么回事了:因为int其实就是Int32,Int32是结构,结构中定义了方法,所以就可以点出来了!但是第二个问题有没有什么简单的代码可以示例一下~~
作者: 胡章诚    时间: 2013-6-12 11:30
这里的 int 已经不是指数据类型,所有可以点出方法很正常啊,下面是int.TryParse()的用法:

static void Main(string[] args)
        {
            string value = "12";
            int intValue = 0;                   //将Value转换成int后输出的数

            bool result=int.TryParse(value,out intValue);             //得到一个bool值
            if (result)   //使用bool值
            {
                Console.WriteLine("可以转换成数字");                Console.WriteLine(intValue.ToString());   //输出得到的数
            }
            else
            {
                Console.WriteLine("不能转换成数字");
            }
            Console.ReadKey();
        }

作者: 彭康    时间: 2013-6-12 11:31
本帖最后由 杞文明 于 2013-6-13 16:40 编辑

int 是一个结构体 叫 int32 下面是他的构造函数


作者: yangaidongcumt    时间: 2013-6-12 11:32
胡章诚 发表于 2013-6-12 11:30
这里的 int 已经不是指数据类型,所有可以点出方法很正常啊,下面是int.TryParse()的用法:

static void M ...

int在这不是数据类型?这句话你确定对?
作者: yangaidongcumt    时间: 2013-6-12 11:35
胡章诚 发表于 2013-6-12 11:30
这里的 int 已经不是指数据类型,所有可以点出方法很正常啊,下面是int.TryParse()的用法:

static void M ...

还有这个TryParse方法:是不是如果可以转换成功,就把要转换的值赋值给第二个参数,如果转换不成功,则还是intValue的值~
作者: 李奔    时间: 2013-6-12 11:35
一个简单小例子:
            Console.WriteLine("请输入字符串:");
            String str = Console.ReadLine();
            int a;
            //str是否为字符串型的整数,尝试转换一下
            if (int.TryParse(str, out a))
            {
                Console.WriteLine("{0}是整数",str);
            }
            else
            {
                Console.WriteLine("{0}不是整数",str);
            }
           Console.ReadKey();




作者: ljh4282158    时间: 2013-6-12 11:38
yangaidongcumt 发表于 2013-6-12 11:26
第一个问题我知道是怎么回事了:因为int其实就是Int32,Int32是结构,结构中定义了方法,所以就可以点出 ...

string s = Console.ReadLine();
            int a;
            int.TryParse(s, out a);   //转换失败的时候,或者转换的数字大于int 类型范围的时候,输出的数字会是 0 而不会报错
            Console.WriteLine(a);


      
作者: 胡章诚    时间: 2013-6-12 11:45
yangaidongcumt 发表于 2013-6-12 11:32
int在这不是数据类型?这句话你确定对?

我是以我自己的思维方式去理解这个问题,可能不是实质,但是可以肯定,也许出处相同,但是这里的int的含义肯定不同于数据类型的int,
对,你说的是对的,入过可以成功转换,intVlue就重新赋值,否则不变
作者: yangaidongcumt    时间: 2013-6-12 11:53
胡章诚 发表于 2013-6-12 11:45
我是以我自己的思维方式去理解这个问题,可能不是实质,但是可以肯定,也许出处相同,但是这里的int的含 ...

嗯~~发现一个问题,给intValue赋值是没有意义的,如果转换不成功会输出0,我看了一下微软的解释是这样的,所以最好不好在外面赋值,赋值的话,失败还是0,对于点出方法:我理解是结构中包含了这个方法,所以可以点出来了~~~~
作者: yangaidongcumt    时间: 2013-6-12 11:54
ljh4282158 发表于 2013-6-12 11:38
string s = Console.ReadLine();
            int a;
            int.TryParse(s, out a);   //转换失 ...

嗯,谢谢你,了解了~~~~~
作者: yangaidongcumt    时间: 2013-6-12 11:55
李奔 发表于 2013-6-12 11:35
一个简单小例子:
            Console.WriteLine("请输入字符串:");
            String str = Console.R ...

Thanks~了解了O(∩_∩)O,一起加油去8期~~~
作者: 李晶晶    时间: 2013-6-12 12:00
本帖最后由 李晶晶 于 2013-6-12 12:02 编辑

int.Parse("10");转到定义,你会发现其实它是一个Int32结构体,其中parse是结构体的一个静态方法。因为在C#中,int是Int32的别名,编译器看起来它们是完全一致的,没有任何区别,所以int.parse()跟Int32.parse是等价的。
下面是int.TryParse()方法的用法:
static void Main(string[] args)
        {
            string s = "123";
            int number;//用来存储输出参数传递过来的值
            //int.TryParse(s, out number)有两个参数,
            //一个是需要转化的字符串
            //一个是转换成功后需要输出的值
            if (int.TryParse(s, out number))    //如果不能转换,方法将返回false,反之,则返回true。
            {
                Console.WriteLine("转换成功,值为:{0}",number);
            }
            else
            {
                Console.WriteLine("转换失败");
            }
            Console.ReadKey();
作者: yangaidongcumt    时间: 2013-6-12 12:07
李晶晶 发表于 2013-6-12 12:00
int.Parse("10");转到定义,你会发现其实它是一个Int32结构体,其中parse是结构体的一个静态方法。因为在C# ...

谢谢你,我了解了~~~~主要是第一个问题困扰了我好久~~~~
作者: 甘斌斌    时间: 2013-6-12 12:10
yangaidongcumt 发表于 2013-6-12 11:26
第一个问题我知道是怎么回事了:因为int其实就是Int32,Int32是结构,结构中定义了方法,所以就可以点出 ...

如果不加try就是转换,加了try就是尝试着转换!
作者: 胡章诚    时间: 2013-6-12 12:11
yangaidongcumt 发表于 2013-6-12 11:53
嗯~~发现一个问题,给intValue赋值是没有意义的,如果转换不成功会输出0,我看了一下微软的解释是这样的 ...

恩恩,学习了,




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2