C#学习日记 StringBuilder

本文介绍了一种在.NET中高效处理字符串的方法——使用StringBuilder,并通过一个Vector类的实例展示了如何利用StringBuilder来格式化输出,提高了字符串操作的效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

当字符串需要多次修改操作,而且数据比较多的时候可以用StringBuilder,string做修改操作的时候,都实际上新建了一个字符串。StringBuilder还可以指定容量,也可以不指定。

using System;
using System.Text;

namespace Wrox
{
	public class MainEntryPoint
	{
		static int Main(string[] args)
		{
			Vector v1 = new Vector(1, 32, 5);
			Vector v2 = new Vector(845.4, 54.3, -7.8);
			Console.WriteLine("\nIn JIK format,\n v1 is {0,30:JIK}\n v2 is {1,30:JIK}", v1, v2);
			Console.WriteLine("\nIn default format,\n v1 is {0,30}\n v2 is {1,30}", v1, v2);
			Console.WriteLine("\nIn VE format,\n v1 is {0,30:VE}\n v2 is {1,30:VE}", v1, v2);
			Console.WriteLine("\nIn Norm format,\n v1 is {0,30:N}\n v2 is {1,30:N}", v1, v2);

			return 0;
		}
	}
	struct Vector : IFormattable
	{
		public double x, y, z;
		public Vector(double x, double y, double z)
		{
			this.x = x;
			this.y = y;
			this.z = z;
		}
		public override string ToString()
		{
			return String.Format("({0},{1},{2})", 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 "VE":
					return String.Format("({0:E},{1:E},{2:E})", x, y, z);
				case "IJK":
					StringBuilder sb = new StringBuilder(x.ToString(),30);
					sb.AppendFormat(" i + ");
					sb.AppendFormat(y.ToString());
					sb.AppendFormat(" j + ");
					sb.AppendFormat(z.ToString());
					sb.AppendFormat(" k");
					return sb.ToString();
				default :
					return ToString();
			}
		}
		public double Norm()
		{
			return x * x + y * y +z * z;
		}
	}
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值