d******8 发帖数: 2191 | 1 定义了ListLong,
class ListLong:List{
.....
}
而下面这句在运行时出错,cannot cast object......
var s=(ListLong)(new List{1,2,3,4,5,6});
问题在哪儿呢?求大牛指教! | l*s 发帖数: 783 | 2 这样不允许。反过来可以。
【在 d******8 的大作中提到】 : 定义了ListLong, : class ListLong:List{ : ..... : } : 而下面这句在运行时出错,cannot cast object...... : var s=(ListLong)(new List{1,2,3,4,5,6}); : 问题在哪儿呢?求大牛指教!
| d******8 发帖数: 2191 | 3 我定义ListLong的目的是为了override List的ToString(),比如
List a={1,2,3,4,5,6};
a.ToString()的结果就是,1x2x3x4x5x6 e.g.
而我又不想定义function ToString(List a)而调用 ToString(a)来实现,因为这
样不方便chain methods。
请问怎么办呢?
【在 l*s 的大作中提到】 : 这样不允许。反过来可以。
| d******8 发帖数: 2191 | 4 Actually, overriding type casting operator solves my problem.
http://msdn.microsoft.com/en-us/library/85w54y0a(v=VS.100).aspx
thanks.
【在 l*s 的大作中提到】 : 这样不允许。反过来可以。
| d******8 发帖数: 2191 | 5 sorry
User-defined conversion operator from or to base class is not allowed.....
use constructor instead
【在 d******8 的大作中提到】 : Actually, overriding type casting operator solves my problem. : http://msdn.microsoft.com/en-us/library/85w54y0a(v=VS.100).aspx : thanks.
| v******n 发帖数: 421 | 6 一般不应该 override .net framework 里的东西吧,你可以用ListLong的ToString(),
override一下,或者用extension method (但是不能用ToString这个名字)
【在 d******8 的大作中提到】 : 我定义ListLong的目的是为了override List的ToString(),比如 : List a={1,2,3,4,5,6}; : a.ToString()的结果就是,1x2x3x4x5x6 e.g. : 而我又不想定义function ToString(List a)而调用 ToString(a)来实现,因为这 : 样不方便chain methods。 : 请问怎么办呢?
| d******8 发帖数: 2191 | 7 就是用ListLong的ToString() override的
),
【在 v******n 的大作中提到】 : 一般不应该 override .net framework 里的东西吧,你可以用ListLong的ToString(), : override一下,或者用extension method (但是不能用ToString这个名字)
| l*s 发帖数: 783 | 8 Pass in的List{1,2,3,4,5,6}不受你控制吗?否则为什么不直接创建ListLong
object?
【在 d******8 的大作中提到】 : 定义了ListLong, : class ListLong:List{ : ..... : } : 而下面这句在运行时出错,cannot cast object...... : var s=(ListLong)(new List{1,2,3,4,5,6}); : 问题在哪儿呢?求大牛指教!
| d******8 发帖数: 2191 | 9 谢谢!就是这么解决的。
【在 l*s 的大作中提到】 : Pass in的List{1,2,3,4,5,6}不受你控制吗?否则为什么不直接创建ListLong : object?
|
|