...
...
...
try
{
string Tags_collect;
SqlDataReader Data1 = cmd.ExecuteReader();
Data1.Read();
lbl_q_title.Text = Data1["subject"].ToString();
Data1.NextResult();
while (Data1.Read())
{
Tags_collect = Data1.GetString(0);
Tags_collect= Tags_collect+ Tags_collect;
}
lbl_tags.Text = Tags_collect;
.....
....
....
Run Code Online (Sandbox Code Playgroud)
不知道为什么我得到这个错误我错过了什么?
您第一次分配到循环Tags_collect内部while (Data1.Read()),这不能保证永远执行.
通过在声明变量时初始化变量来解决此问题:
string Tags_collect = string.Empty;
Run Code Online (Sandbox Code Playgroud)
更好的是,使用a StringBuilder而不是依赖重复的连接:
StringBuilder tags = new StringBuilder();
// ...
while (Data1.Read())
{
string tag = Data1.GetString(0);
sb.Append(tag);
sb.Append(","); // Separator
}
lbl_tags.Text = tags.ToString();
Run Code Online (Sandbox Code Playgroud)
在循环中将字符串连接到自身是非常低效的,因为字符串是不可变的,因此每个连接都会创建一个全新的实例.使用a StringBuilder通过使用单个缓冲区来防止这种情况.
| 归档时间: |
|
| 查看次数: |
4039 次 |
| 最近记录: |