甜羊羊 2022-05-17 11:18 采纳率: 87.5%
浏览 28
已结题

C#中关于System.Collections.Generic.IReadOnlyCollection< >数据类型的疑惑

写了一个语句:
BluetoothDeviceInfo[] devices = client.DiscoverDevices();
报错是:
无法将类型“System.Collections.Generic.IReadOnlyCollection<InTheHand.Net.Sockets.BluetoothDeviceInfo>”隐式转换为“InTheHand.Net.Sockets.BluetoothDeviceInfo[]”。存在一个显式转换(是否缺少强制转换?)
写成 BluetoothDeviceInfo[] devices = (BluetoothDeviceInfo[])client.DiscoverDevices() 来强制转换也不行。运行时还是报错,显示无法强转。

想知道System.Collections.Generic.IReadOnlyCollection< >这是一个什么类型的数据,我试了赋值给List< BluetoothDeviceInfo >也是类似报错。

  • 写回答

1条回答 默认 最新

  • 码老头 2022-05-17 11:41
    关注

    调用LINQ的.ToArray()方法,将其转换成数组,示例如下:

    IReadOnlyCollection<BluetoothDeviceInfo> list = new List<BluetoothDeviceInfo>
    {
        new() {Id = 1},
        new() {Id = 2},
        new() {Id = 3},
        new() {Id = 4},
        new() {Id = 5}
    }.AsReadOnly();
    
    BluetoothDeviceInfo[] devices = list.ToArray();
    foreach (var item in devices)
    {
        Console.WriteLine(item.Id);
    }
    
    public class BluetoothDeviceInfo
    {
        public int Id { get; set; }
    }
    

    IReadOnlyCollection的集合从字面理解,它是只读的,你不能修改IReadOnlyCollection集合中的数据,比如:添加,修改,删除集合中的元素等等。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录

报告相同问题?

问题事件

  • 系统已结题 5月25日
  • 已采纳回答 5月17日
  • 创建了问题 5月17日

悬赏问题

  • ¥15 Macbookpro 连接热点正常上网,连接不了Wi-Fi。
  • ¥15 delphi webbrowser组件网页下拉菜单自动选择问题
  • ¥15 linux驱动,linux应用,多线程
  • ¥20 我要一个分身加定位两个功能的安卓app
  • ¥15 基于FOC驱动器,如何实现卡丁车下坡无阻力的遛坡的效果
  • ¥15 IAR程序莫名变量多重定义
  • ¥15 (标签-UDP|关键词-client)
  • ¥15 关于库卡officelite无法与虚拟机通讯的问题
  • ¥15 目标检测项目无法读取视频
  • ¥15 GEO datasets中基因芯片数据仅仅提供了normalized signal如何进行差异分析