/*
string类和StringBuilder格式化的使用
*/
using System;
using System.Text;
namespace Frank
{
public class Test
{
//程序入口
public static void Main(string[] args)
{
//string类是一个不可变的类,如果对一个string类型的变量进行多少的修改应该使用StringBuilder类,因为后者比前者速度更快,更节省空间
string str = "1";
str += "2";
StringBuilder SB = new StringBuilder();//可以设置默认大小等一些参数
SB.Append("1");
SB.AppendFormat("123{0}",4);
Console.WriteLine(str+"\n"+SB.ToString());
/*结果:
12
11234
*/
Test2 t2 = new Test2();
t2.x = 10;
t2.y = 20;
t2.z = 30;
Console.WriteLine("{0,10:N}",t2);//|| 1400 ||
}
}
public struct Test2 : IFormattable//自定义结构体,然后自定义输出格式
{
public double x,y,z;
public string ToString(string format,IFormatProvider formatProvider)
{
if(format == null)
{
return ToString();
}
string formatUpper = format.ToUpper();
switch(formatUpper)
{
case "N":
{
return "|| "+ Norm().ToString()+" ||";
}
case "J":
{
return string.Format("{0:E}, {1:E}, {2:E}",x,y,z);
}
default:
return ToString();
}
}
public override string ToString()
{
return x + ", " + y + ", " + z;
}
public double Norm()
{
return x*x+y*y+z*z;
}
}
}