首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

console.writeline()没看懂,该怎么解决

2012-03-22 
console.writeline()没看懂C# codeusing Systemusing System.Collections.Genericusing System.Linqusi

console.writeline()没看懂

C# code
using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace ConsoleApplication7{    class point    {        public int x, y;        public point()        {            x = 0;            y = 0;        }        public point(int x, int y)        {            this.x = x;            this.y = y;        }        public override string ToString()        {            return (string.Format("({0},{1})", x, y));        }    }    class Program    {        static void Main(string[] args)        {            point p1 = new point();            point p2 = new point(5, 3);          [color=#FF0000]  Console.WriteLine("P1点对应的坐标为{0}", p1);[/color]                     Console.ReadKey();        }    }}


这里console.writeline("P1点的对应坐标为{0},p1") 为什么就调用了point类下的Tostring方法
关于函数重载我知道De

[解决办法]
Console.WriteLine("P1点对应的坐标为{0}", p1);

控制台输出的是string ,所以会把 p1这个对象先转换为string ,如果你没有重写ToString();
会调用系统其基类ToString() ;
[解决办法]
LZ估计是想知道他为什么自动去调用tostring了吧 这是因为writeline的参数实际上是object类型 内部调用的是object类型的tostring C#学过的都知道任何类都继承自object因此肯定都有tostring方法 这里楼主又重写了object的tostring 也就是说在这边有个多态
可以试下把override关键字改成new 那么调用的将会是基类object的tostring方法 也就是输出类名
[解决办法]
console.writeline在输出字符串的时候,会去调用参数的ToString()方法将参数转换成字符串。
从Object类继承来的对象都会拥有默认的ToString()方法,但是很多时候ToString()之后的字符串会有自己的要求,那么重写ToString()方法可以自定义输出的字符串,可以作一些格式化方面的操作等。
[解决办法]
因为Console.WriteLine这个函数里就是这样写的
[解决办法]
Console.WriteLine 会判断参数类型,如果不是string会尝试调用参数的ToString,如果有ToString方法,则显示输出结果,没有就报错了
[解决办法]
探讨

Console.WriteLine("P1点对应的坐标为{0}", p1);

控制台输出的是string ,所以会把 p1这个对象先转换为string ,如果你没有重写ToString();
会调用系统其基类ToString() ;

热点排行