繁体   English   中英

为什么我收到“System.InvalidCastException: Specified cast is not valid”?

[英]Why am I getting "System.InvalidCastException: Specified cast is not valid"?

此代码用于使用System.Data.SqlClient的 C# SqlDatAdapter 从 SQL 服务器获取我的图书馆应用程序中的所有书籍。 这是将所有书籍添加到List<Book> ,其中 book 是声明的对象类。

allBooks.Add(new Book((String)i["title"], (String)i["author"], (Boolean)i["checkedOut"], (String)i["checkedOutTo"], (DateTime)i["dueDate"], (Double)i["Dues"], (int)i["extensions"], (String)i["imageURL"], (String)i["description"]));

当你有这个位置时,你必须把那一行分割成多于一个代码行。 使用临时变量来存储每个数组访问 + 转换操作的其余部分。 这样你就会得到一个有意义的线路/操作,这就是问题所在。 像这样的东西:

string title = i["title"];
string author = i["author"];
//lines omited

Book temp = new Book (title, author /*remaining temporary variables*/);
allBooks.Add(temp);

不要担心由此产生的任何性能或内存影响。 普通编译器和 JiT 编译器非常擅长确定它可以在发布版本中删除这些变量。 有时它们甚至在 Debug 版本中也很好,强制异常可能很困难。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM