将返回类型定义为接口类型
时间: 2024-03-28 07:41:30 浏览: 9
将返回类型定义为接口类型的示例代码如下:
```csharp
public interface IMyList
{
// 接口定义
int Count { get; }
void Add(string item);
string this[int index] { get; set; }
}
public class MyClass
{
// 方法定义
private List<string> myList = new List<string>();
public IMyList GetList()
{
// 返回实现了接口的类的实例
return new MyListImpl(myList);
}
private class MyListImpl : IMyList
{
// 实现接口
private List<string> list;
public MyListImpl(List<string> list)
{
this.list = list;
}
public int Count => list.Count;
public void Add(string item)
{
list.Add(item);
}
public string this[int index]
{
get => list[index];
set => list[index] = value;
}
}
}
```
在上面的示例中,我们定义了一个`IMyList`接口,表示一个字符串列表,包括`Count`属性、`Add`方法和索引器。然后在`MyClass`类中定义了一个`GetList`方法,用于返回一个实现了`IMyList`接口的类的实例。接着我们定义了一个`MyListImpl`类,实现了`IMyList`接口,并包含了一个`List<string>`类型的字段,用于存储实际的字符串列表。最后,在`GetList`方法中返回了`MyListImpl`类的实例。
通过这种方式,我们可以将返回类型定义为接口类型,从而避免了返回类型的访问级别低于方法的问题。