C#是否可以创建动态StringBuilder数组
本文关键字:动态 StringBuilder 数组 创建 是否 | 更新日期: 2023-09-27 18:04:38
我正试图在C#中动态创建StringBuilder数组,但运气不佳。
我想根据给定的客户端数字向StringBuilder(sb(添加信息,该数字将根据我可能拥有的客户端数量而动态变化。我可能有2个,也可能有20个。在我的程序后期,sb将用于建立基于每个客户的报告。
例如,我有以下3个客户端:
Client A = 0
Client B = 1
Client C = 2
如果客户A报告他有8个苹果,我想将字符串"8个苹果"添加到sb[0]。
如果客户B报告他有3个桔子,我想给某人加上字符串"3个桔子"[1]。
以上只是我试图实现的想法的一个简单例子。事实上,我将向某人添加大量信息
我尝试了以下几项,但没有太大的运气让他们按照我预期或想要的方式工作。
StringBuilder[] sbFileError = new StringBuilder[clientCount];
List<StringBuilder> sbFileError = new List<StringBuilder>();
有什么想法吗?是否可以创建StringBuilder数组?
谢谢!
您已经创建了上面的容器,但您需要用一些东西填充它们。例如:
StringBuilder[] sbFileError = new StringBuilder[clientCount];
for (int ix = 0; ix < clientCount; ++ix)
sbFileError[ix] = new StringBuilder();
或
List<StringBuilder> sbFileError = new List<StringBuilder>();
for (int ix = 0; ix < clientCount; ++ix)
sbFileError.Add(new StringBuilder());
创建数组是第一步,但这只会创建存储StringBuilders的位置。在这一点上,您实际上还没有实例化任何StringBuilder。你需要做这样的事情。。。。
StringBuilder[] sbFileError = new StringBuilder[clientCount];
for (int i = 0; i < sbFileError.Length; i++)
sbFileError[i] = new StringBuilder();
我认为您缺少数组元素的实例化。此代码有效。
int clientCount = 3;
StringBuilder[] sbFileError = new StringBuilder[clientCount];
for(int i=0; i<clientCount; i++)
{
sbFileError[i] = new StringBuilder();
}
sbFileError[1].Append("Hello World!");
List<StringBuilder> sbFileError = new List<StringBuilder>();
看起来还可以,但你必须填写:
for (int i = 0; i < numClients; i++)
sbFileError.Add(new StringBuilder());
你也可以得到花式:
var items = Enumerable.Range(0, clientCount)
.Select(i => new StringBuilder());
var list = new List<StringBuilder>(items);
或缩短为:
var list = Enumerable.Range(0, clientCount)
.Select(i => new StringBuilder())
.ToList();
篮子里又多了一个鸡蛋。