Tag: 铸造

将IList投射到列表

我正在尝试将IListtypes转换为Listtypes,但每次都会出现错误。 List<SubProduct> subProducts= Model.subproduct; Model.subproduct返回IList<SubProduct> 。

什么是最快的:(int),Convert.ToInt32(x)或Int32.Parse(x)?

以下哪个代码是最快/转换某个对象x的最佳做法? int myInt = (int)x; 要么 int myInt = Convert.ToInt32(x); 要么 int myInt = Int32.Parse(x); 或者在string“s”的情况下, int myInt; Int32.TryParse(s, out myInt); 我很好奇哪个执行最快的数据types有一个方法在转换,而不仅仅是整数。 我只是用int作为例子。 编辑:这种情况来自从数据表获取信息。 Will(int)仍然工作最快? 从一些testing中,当对象x = 123123123时,int执行速度最快,就像很多人所说的那样。 当x是一个string时,Parse运行速度最快(注:cast会抛出一个exception)。 我真正好奇的是,在以下列方式检索值时,它们是如何运行的: foreach(DataRow row in someTable.Rows) { myInt = (int)row["some int value"]; myInt2 = Int.Parse(row["some int value"]); myInt2 = Convert.ToInt32(row["some int value"]); }

我如何在Scala中投射?

例如,假设我有 val myDouble = 25.7 val myInt = 5 我将如何做类似的事情 val divide = (Int) (myDouble / myInt)

如何在Java中模拟C#as-operator

在某些情况下,types转换返回一个空值而不是引发ClassCastException是可行的。 C#有as操作符来执行此操作。 在Java中是否有可用的等价物,所以您不必显式检查ClassCastException?

如何让Java方法返回任何types的generics列表?

我想写一个方法,将返回任何types的java.util.List , 而不需要任何types的注释 : List<User> users = magicalListGetter(User.class); List<Vehicle> vehicles = magicalListGetter(Vehicle.class); List<String> strings = magicalListGetter(String.class); 方法签名是什么样的? 像这样的东西,也许(?): public List<<?> ?> magicalListGetter(Class<?> clazz) { List<?> list = doMagicalVooDooHere(); return list; } 提前致谢!

在javascript中将字节数组转换为string

如何将字节数组转换为string? 我发现这些function是相反的: function string2Bin(s) { var b = new Array(); var last = s.length; for (var i = 0; i < last; i++) { var d = s.charCodeAt(i); if (d < 128) b[i] = dec2Bin(d); else { var c = s.charAt(i); alert(c + ' is NOT an ASCII character'); b[i] = -1; } } return […]

不能将int转换为bool

我面临的问题是,在我的情况下,C#不能将数字1投掷到布尔。 在我的情况(bool)intValue不起作用。 我得到一个InvalidCastException 。 我知道我可以使用Convert.ToBoolean(…)但我只是想知道这是行不通的。 对此有何解释? 我的代码是 if (actualValueType.Name == "Boolean" || setValueType.Name == "Boolean") { if ((bool)actualValue != (bool)setValue) … }

将shared_ptr <Derived>作为shared_ptr <Base>传递

将派生types的shared_ptr传递给带有基types的shared_ptr的函数,最好的方法是什么? 我通常通过引用传递shared_ptr以避免不必要的副本: int foo(const shared_ptr<bar>& ptr); 但如果我尝试做类似的事情,这是行不通的 int foo(const shared_ptr<Base>& ptr); … shared_ptr<Derived> bar = make_shared<Derived>(); foo(bar); 我可以使用 foo(dynamic_pointer_cast<Base, Derived>(bar)); 但这似乎是次优的有两个原因: dynamic_cast对于简单的派生到基础的演员似乎有点过分。 据我所知, dynamic_pointer_cast创build一个副本(尽pipe是临时的)传递给函数的指针。 有更好的解决scheme吗? 后人更新: 原来是一个缺less头文件的问题。 另外,我在这里试图做的是被认为是反模式。 通常, 不影响对象的生命周期(即对象在函数期间保持有效的函数)的函数应该使用一个普通的引用或指针,例如int foo(bar& b) 。 使用一个对象的函数(即给定对象的最终用户)应该通过值来获取unique_ptr ,例如int foo(unique_ptr<bar> b) 。 调用者应该std::move值移入该函数。 延长对象生命周期的函数应该通过值来获取shared_ptr ,例如int foo(shared_ptr<bar> b) 。 避免循环引用的通常build议适用。 详情请参阅Herb Sutter的“ 回归基础” 。

意外的types安全违规

在以下代码中,将dowcast转换为表面上不兼容的types将通过编译: public class Item { List<Item> items() { return asList(new Item()); } Item m = (Item) items(); } Item和List<Item>是完全不同的types,因此投射不会成功。 为什么编译器允许这个?

C ++不能通过虚拟基础A从基础A转换到派生typesB.

我有三个class级: class A {}; class B : virtual public A {}; class C : virtual public A {}; class D: public B, public C {}; 试图从A *到B *静态转换我得到以下错误: cannot convert from base A to derived type B via virtual base A