网络服务提供者不是网络运营者对不对,seo公司推广宣传,南宁做网站seo,网站推广方案设计方案简述
将对象格式化输出为String类型
一、String.Format();
简述
string类自带的静态方法
Code
剖析一下下面三种结果一样的写法区别在哪里
var test1 string.Format(测试1#xff1a;{0} 中午吃了{1},name,food);
var test2 测试2: name
简述
string类自带的静态方法
Code
剖析一下下面三种结果一样的写法区别在哪里
var test1 string.Format(测试1{0} 中午吃了{1},name,food);
var test2 测试2: name 中午吃了 food;
var test3 string.Format(测试1 name 中午吃了 food);
Code剖析
推荐第一种方式 - test2、test3中因有 号降低了性能String虽然是引用类型.Net的特殊处理String是值类型一样在每次值的改变修改内存 - test1中用的 {}已经定义的方法本质是StringBuilder,分配缓存……简单的说就是每次值改变不会重新分配内存
二、To.String();
简述
重写ToString();
重写无参的ToString();
Code
public override string ToString()
{ return ……}
重写有参的ToString();
简述
继承接口IFormattable重写有参ToString();
Code
继承该接口
class A : IFormattable
{public string Name { get; set; }
接口方法ToString()public string ToString(string format, IFormatProvider formatProvider){var nameArray Name.Split(#);if(0 format)return 姓名 nameArray[0];if(1 format)return 武功 nameArray[1];return null;}
}
Code结果 其他
如果你想像用常规的ToString()的方法一样一个参数可以在上面代码中加入
public string ToString(string format)
{ return ToString(format, null); }
及时你写了这么多ToString()但仍然想要常规的将19.5转为String不影响的
IFormatProvider与ICustomFormatter的使用
简述
使用方式这两个接口是连着使用的类似于工厂模式下面Code解释使用目的上面重写ToString()是为了将对象格式化的输出但如果有A类、B类、香蕉类都需要格式化输出连着各使用一次上面的这两个接口就无需一个一个继承IFormattable
Code
1.Build一个Class来继承ICustomFormatter实现方法Format()格式化的内容;
class FromatClass : Exception, ICustomFormatter
{public string Format(string format, object arg, IFormatProvider formatProvider){ return 啦啦啦德玛西亚; }
}
2.Build一个Class来继承IFormatProvider实现方法GetFormat(), 分发者
class FromatProvider:IFormatProvider
{public object GetFormat(Type formatType){ return new FromatClass(); }
}
3.使用 var B1 new B {Name 步惊云}; //B是和A一样的一个类var result string.Format(new FromatProvider(), {0},B1.Name);
4.结果 5.到了这一步每个类都格式化同样的内容如果每个类还想得到不同的呢可以在Format()中Switch判断也可以在Format()中return 改为 return “啦啦啦德玛西亚 arg。ToString()”; ,arg是对象在这里是B1然后在B类中按上面的方法重写ToString()即可。
return 啦啦啦德玛西亚 arg.ToString();
结尾
return的是String本质是重载ToString();
Code地址
https://code.csdn.net/snippets/1025804