在C#中转换List对象

sla*_*lao 0 c# casting

我需要将List对象转换为另一个作为接口的List对象

public class THold : IHold
{..}
Run Code Online (Sandbox Code Playgroud)

在这里,IHold是界面.

我想做这个:

List<THold> hold = new List<THold>();
List<IHold> test = hold;
Run Code Online (Sandbox Code Playgroud)

Jus*_*ner 6

你最接近的是:

List<IHold> test = hold.Cast<IHold>().ToList();
Run Code Online (Sandbox Code Playgroud)

问题是不存在直接演员.如果我有以下内容怎么办?

public class THold : IHold { /* ... */ }

public class UHold : IHold { /* ... */ }
Run Code Online (Sandbox Code Playgroud)

然后:

List<THold> holds = new List<THold>();
List<IHold> iholds = (List<IHold>) holds;

iholds.Add(UHold);
Run Code Online (Sandbox Code Playgroud)

显然UHold实现IHold界面但显然也无法添加到THold对象列表中.

  • IHold,UHold,我们都坚持IHold!(抱歉,我无法抗拒) (2认同)