我有一個泛型集合路徑,其中T是段 - 段是抽象類。 我有一個包含從抽象基類段經由中間類線段派生類SpecialLineSegments路徑的派生類ClosedPath。 我想選擇滿足條件的路徑,然後我將修改它,使得它可以包含不同類型段的,可能不是一個ClosedPath了....所以我試圖轉換爲路徑。編譯器給出錯誤,表明這種轉換是不可能的。如何轉換爲普通集合
public static void Method1(ClosedPath[] paths)
{
bool condition = false;
//working code..
Path<Segment> Pslct = new Path<Segment>();
foreach (ClosedPath P in paths)
{
if (condition)
{
//working code
Pslct = (Path<Segment>) P;
}
}
}
路徑定義如下......
public class Path<T> : IEnumerable<T> where T : Segment
{
private List<T> segments = new List<T>();
public List<T> Segments
{
set { segments = value;}
get { return this.segments; }
}
public T this[int pos]
{
get { return (T)segments[pos]; }
set { segments[pos] = value; }
}
public Path()
{
this.Segments = new List<T>();
}
public Path(List<T> s)
{
this.Segments = s;
}
public void AddSegment(T s) {Segments.Add(s);}
public int Count {get {return Segments.Count;}}
IEnumerator<T> IEnumerable<T>.GetEnumerator()
{ return Segments.GetEnumerator();}
IEnumerator IEnumerable.GetEnumerator()
{ return Segments.GetEnumerator(); }
}
ClosedPath從
public class LinePath<T> : Path<T>, IEnumerable<T> where T : LineSegment
{
//working code
}
線段源自段
如何定義路徑? – 2012-03-19 14:00:50
@James上面編輯 – gwizardry 2012-03-19 14:10:04
寫一個顯式的轉換操作符。 – phoog 2012-03-19 14:10:34