与简单地连接字符串相比,StringBuilder具有更快的字符串操作工具的美誉.不管这是不是真的,我想知道StringBuilder操作的结果和它们产生的字符串.
快速浏览Reflector表明StringBuilder.ToString()并不总是返回副本,有时似乎返回内部字符串的实例.它似乎也使用一些内部函数来操纵内部字符串.
那么如果我这样做,我会得到什么?
string s = "Yo Ho Ho";
StringBuilder sb = new StringBuilder(s);
string newString = sb.ToString();
sb.Append(" and a bottle of rum.");
string newNewString = sb.ToString();
Run Code Online (Sandbox Code Playgroud)
newString和newNewString是不同的字符串实例还是相同?我试图通过反射器解决这个问题,而我只是不太了解一切.
这段代码怎么样?
StringBuilder sb = new StringBuilder("Foo\n");
StringReader sr = new StringReader(sb.ToString());
string s = sr.ReadLine();
sb.Append("Bar\n");
s = sr.ReadLine();
Run Code Online (Sandbox Code Playgroud)
最后一个语句会返回null还是"Bar"?如果它返回一个或其他,这个定义或未定义的行为?换句话说,我可以依靠吗?
文档在这个主题上非常简洁,我不愿意依赖观察到的行为而不是规范.
如果我在nfs服务器上有两个目录,我想在其间复制大量数据(在几千个文件中,而不是一个大块),有没有办法优化它作为"本地"副本服务器?NFS是否自动执行此操作,如果没有,是否有一个选项可以启用它,或者客户端是否有一些不可避免的命中?sshing进入nfs服务器不是一个选项,遗憾的是 - nfs mount是我唯一的访问权限.
我正在寻找一个存储字符串的数据结构.我需要一个接口中的函数,它接受一个字符串作为唯一参数,并返回一个引用/迭代器/指针/句柄,可用于检索其余字符串的字符串.数据结构的生命周期.不需要设置成员资格,条目删除等.
我更关心内存使用而不是速度.
JVM如何制作它的窗口,我知道它有它的jar文件和可执行文件等...我想知道的是用桌面应用程序周围的框架制作的窗口究竟是怎样的.
它是安装在机器上的图形库标准吗?
我有一个类库,主要将字符串记录到文本文件.它的一个方法是LogString(字符串str)所以我只是想知道基于下面的函数,如果我多次调用它超过600次,是否会导致stackoverflow?
public void LogString(string str)
{
try
{
if (filePathFilenameExists())
{
using (StreamWriter strmWriter = new StreamWriter(filePathFilename, true))
{
strmWriter.WriteLine(str);
strmWriter.Flush();
strmWriter.Close();
}
}
else
{
MessageBox.Show("Unable to write to file");
}
}
catch (Exception err)
{
string errMsg = err.Message;
}
}
Run Code Online (Sandbox Code Playgroud) c# ×2
string ×2
.net ×1
algorithm ×1
file-io ×1
heuristics ×1
java ×1
nfs ×1
spreadsheet ×1
unicode ×1