0

为什么我不能这样做?该方法被调用了两次,第二次通过 if 语句为 false 但是分配给 CommandText 的原始字符串保持不变,即使在我重新分配它之后也是如此。

void someMethod(bool yes){

SqlCeCommand foo = new SqlCeCommand();
SqlCeCommand boo = new SqlCeCommand();

if(yes)
{
  foo.CommandText = "SELECT * FROM @where";
  boo.CommandText = "SELECT * FROM @where2";
  foo.Parameters.AddWithValue("@where", Earth);
  boo.Parameters.AddWithValue("@where2", Mars);

  addToDataBase(foo);
  addToDataBase(boo); 
}
else{
  foo.CommandText = "DELETE * FROM @where";
  boo.CommandText = "DELETE * FROM @where2";
  foo.Parameters.AddWithValue("@where", Earth);
  boo.Parameters.AddWithValue("@where2", Mars);

  deleteFromDataBase(foo);
  deleteFromDataBase(boo); 
}

在 else 语句之后不会重新分配命令文本

我可以简单地重组并制作另一个 sqlCeCommand,我只想知道为什么这不起作用。

谢谢。

4

1 回答 1

0

您的命令类型变量SqlCeCommand 永远不会重新分配。因为在每次调用时,您都在创建这种类型的新对象。在此之后,您根据您的条件是否满足进行分配。如果您想重新分配,您必须SqlCeCommands在您的班级中将您的字段声明为私有字段。

于 2013-04-30T20:25:07.973 回答