我想知道是否有更多的OO方式在C#中创建空格.
字面太空码!
我目前有tabs += new String(" ");,我不禁觉得这有点让人联想到使用""而不是String.Empty.
我可以用什么来创建不是的空间" "?
dtb*_*dtb 44
你可以写
" "
Run Code Online (Sandbox Code Playgroud)
代替
new String(' ')
Run Code Online (Sandbox Code Playgroud)
这有帮助吗?
根据您的操作,您可能希望查看接受字符和"重复"计数的StringBuilder.Append重载:
var tabs = new StringBuilder();
tabs.Append(' ', 8);
Run Code Online (Sandbox Code Playgroud)
或进入string 构造函数是构建从性格上的一个"重复"的字符串数:
var tabs = new string(' ', 8);
Run Code Online (Sandbox Code Playgroud)
这是一个企业级的OO解决方案,可满足您所有的空间生成需求:
public abstract class SpaceFactory
{
public static readonly SpaceFactory Space = new SpaceFactoryImpl();
public static readonly SpaceFactory ZeroWidth = new ZeroWidthFactoryImpl();
protected SpaceFactory { }
public abstract char GetSpace();
public virtual string GetSpaces(int count)
{
return new string(this.GetSpace(), count);
}
private class SpaceFactoryImpl : SpaceFactory
{
public override char GetSpace()
{
return '\u0020';
}
}
private class ZeroWidthFactoryImpl : SpaceFactory
{
public override char GetSpace()
{
return '\u200B';
}
}
}
Run Code Online (Sandbox Code Playgroud)
Jon*_*eet 15
现在您已在评论中澄清:
在我的实际代码中,我正在做新的String('',numberOfSpaces),所以我可能还需要使用新的String部分.
...到目前为止的其他答案实际上是无用的:(
你可以写:
const char Space = ' ';
Run Code Online (Sandbox Code Playgroud)
然后用
new string(Space, numberOfSpaces)
Run Code Online (Sandbox Code Playgroud)
但我认为没有任何好处
new string(' ', numberOfSpaces)
Run Code Online (Sandbox Code Playgroud)
如果空格的数量会发生变化,那么你可以这样做:
public static string Space(int count)
{
return "".PadLeft(count);
}
Space(2);
Run Code Online (Sandbox Code Playgroud)
没有理由这样做.所有其他条件相同,更小的代码是更好的代码.String.Empty和new String(' ')传达同样的事情,""而且" ",他们只是需要更多的字符来做到这一点.
试图让它"更多OO"只是增加了角色,没有任何好处.面向对象本身并不是目的.
| 归档时间: |
|
| 查看次数: |
67575 次 |
| 最近记录: |