【发布时间】:2018-10-14 16:29:25
【问题描述】:
我有一个读取 MIFARE 卡内数据块的代码。
rfidM1.ReadDataFromCardM1 方法将读取一个块并返回string 中的值。
string memQuery = string.Empty;
int i = 0, j = 0;
sector = 4;
block = 4;
for (i = 0; i < block; i++)
{
for (j = 0; j < sector; j++)
{
memQuery += rfidM1.ReadDataFromCardM1(Convert.ToByte(j), Convert.ToByte(i), _Key1) + ",";
}
}
我的意图是用逗号连接memQuery。此处的示例输出:
,0,,,,,True,,C0-12320,0,,,,,,
我用各种方式连接memQuery,例如,使用+=、StringBuilder 或ArrayList,但它们不起作用,因为当我将它放入 MessageBox 时它总是有这样的输出。
,0
看起来0 后面的字符串不能与后面的其他字符串连接。为什么?
【问题讨论】:
-
尝试使用
List<string>(包含真实字符串)而不是ArrayList(仅包含objects) -
我对
memQuery.Add感到困惑。那是收藏吗?尝试重构您的代码。variables和您想要连接到该字符串的值是什么?K?你在附近,.ToString().Replace()附近闻起来很奇怪。尝试为每个目的创建不同的方法,以便更容易调试问题。 -
OT 声明
for语句的索引变量的常用方法是在其中:for (int i=0; ...。如果这是您真正需要的,您也可以将其声明为byte -
@HansKesting 我用 List
试了一下,得到了同样的结果。 -
如果
memQuery[k]返回null,当尝试对其执行任何方法时,例如GetType() 或ToString(),您将得到NullReferenceException。ReadDataFromCardM1是否可以返回nulls 或控制字符?
标签: c# string concatenation