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方法,则显示输出结果,没有就报错了
[解决办法]