iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >怎么在C#中地址只读 Collections
  • 568
分享到

怎么在C#中地址只读 Collections

2023-06-14 12:06:36 568人浏览 泡泡鱼
摘要

本篇文章为大家展示了怎么在C#中地址只读 Collections,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。集合 表示一组可用于获取和存储的对象,在 C# 中提供了两种类型的集合。普通集合泛型集合

本篇文章为大家展示了怎么在C#中地址只读 Collections,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。

集合 表示一组可用于获取和存储的对象,在 C# 中提供了两种类型的集合。

  • 普通集合

  • 泛型集合

前者存在于 System.Collections 命名空间下,属类型不安全的,后者存在于 System.Collections.Generic 命名空间下,属类型安全的。

不可变对象 定义为一旦创建就不可变更的对象, 在 .net core 中就存在着这三大 IReadOnlyList,IReadOnlyDictionary 和 IReadOnlyCollection 不可变集合,这篇文章我们就来讨论这些不可变集合以及在C#中如何使用。

三大只读类型介绍

IReadOnlyCollection 表示一个只读集合的基础接口,它实现了 IEnumerable 接口,代码定义如下:

    public interface IReadOnlyCollection<out T> : IEnumerable<T>, IEnumerable    {        int Count { get; }    }

IReadOnlyDictionary 表示一个字典的只读形态,它实现了基础的只读集合接口 IReadOnlyCollection, 下面的代码展示了如何将 泛型字典 只读化。

public IReadOnlyDictionary<string, string> Dictionary { get; } = new Dictionary<string, string>        {            { "1", "ABC" },            { "2", "XYZ" },            { "3", "PQR" },        };

IReadOnlyList 表示一个列表的只读形态,值得注意的是 只读集合 只能通过 index 访问,如下代码所示:

    [DefaultMember("Item")]    public interface IReadOnlyList<out T> : IEnumerable<T>, IEnumerable, IReadOnlyCollection<T>    {        T this[int index] { get; }    }

使用 IReadOnlyList 替换 List

接下来我们看一下如何使用 IReadOnlyList 替换 List 来实现列表的只读化,考虑下面的类。

public class Author{   public int Id { get; set; }   public string FirstName { get; set; }   public string LastName { get; set; }}

假如你想从数据库中返回 author 集合,使用如下代码:

public static List<Author> GetAuthors(){   return new List<Author>   {       new Author       {           Id = 1,           FirstName = "Joydip",           LastName = "Kanjilal"       },       new Author       {           Id = 2,           FirstName = "Steve",           LastName = "Smith"       }    };}

为了简化,我省略了对数据库繁琐的操作,下面的代码展示了如何在 Main 方法中调用 GetAuthors() 方法。

static void Main(string[] args){    var authors = GetAuthors();    Console.Read();           }

显而易见上面的这种 authors 集合是我们用的最多的可变集合,那现在的问题是如何阻止 authors 被修改呢?这里就可以使用 IReadOnlyList 来确保 GetAuthors() 方法返回的集合不可更变,做法就是将方法的返回值从 List<Author> 修改为 IReadOnlyList<Author>,如下代码所示。

public static IReadOnlyList<Author> GetAuthors(){   return new List<Author>   {      new Author      {          Id = 1,          FirstName = "Joydip",          LastName = "Kanjilal"      },      new Author      {          Id = 2,          FirstName = "Steve",          LastName = "Smith"      }    };}

接下来看一下 Main 下的 authors 是否有可添加的 Add() 方法?如下图所示:

怎么在C#中地址只读 Collections

使用 IEnumberable 接口

不知道大家可否发现,现存的只读接口都继承了 IEnumberable,这就意味着 IEnumberable 也是一种只读形态,如果你只需要对集合进行迭代,那么就可以使用 IEnumberable 接口啦,如下代码所示:

public void MyMethod(IEnumerable<Author> authors){  foreach (Author author in authors)  {      //Write your code here  }}

如果需求不满足,可以对 IEnumerable 继续向下转型,比如想对集合进行索引访问,那么可以转成 IReadOnlyList 接口,尽量满足 可用功能的最小化 ,改造后的代码如下:

public void MyMethod(IReadOnlyList<Author> authors){  int count = authors.Count;  for(int index = 0; index < count; index++)  {      var author = authors[index];      //Write your code here  }}

IEnumerable 是 .net 较早版本可用于只读集合形态的接口, 在 .Net Core 中提供了新的只读接口可用于阻止集合的修改,不过值得注意的是,这些对数据提供只读视图的接口,本质上来说也仅仅是高层的封装而已。

上述内容就是怎么在C#中地址只读 Collections,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注编程网精选频道。

--结束END--

本文标题: 怎么在C#中地址只读 Collections

本文链接: https://www.lsjlt.com/news/270555.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 怎么在C#中地址只读 Collections
    本篇文章为大家展示了怎么在C#中地址只读 Collections,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。集合 表示一组可用于获取和存储的对象,在 C# 中提供了两种类型的集合。普通集合泛型集合...
    99+
    2023-06-14
  • 如何在C#中使用只读的 Collections
    目录三大只读类型介绍使用 IReadOnlyList 替换 List使用 IEnumberable 接口集合 表示一组可用于获取和存储的对象,在 C# 中提供了两种类型的集合。 ...
    99+
    2024-04-02
  • c#只读属性怎么设置
    非常抱歉,由于您没有提供文章标题,我无法为您生成一篇高质量的文章。请您提供文章标题,我将尽快为您生成一篇优质的文章。...
    99+
    2024-05-14
  • 怎么在html中设置只读状态
    今天就跟大家聊聊有关怎么在html中设置只读状态,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。html设置只读状态<!DOCTYPE html><html...
    99+
    2023-06-15
  • Linux中怎么读取默认MAC地址
    本篇文章为大家展示了Linux中怎么读取默认MAC地址,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。 一、适用范围这里主要介绍读取网卡MAC地址的方法,适用于EasyARM-i.MX287...
    99+
    2023-06-12
  • Linux下怎么读取MAC地址
    小编给大家分享一下Linux下怎么读取MAC地址,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!mac(Medium Access Control)是网络中用来标识...
    99+
    2023-06-28
  • C++中怎么打印地址信息
    这期内容当中小编将会给大家带来有关C++中怎么打印地址信息,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。在C++编程语言中,要想实现信息的打印,可以使用sprintf()这一方法来实现。在这篇文章中,我们...
    99+
    2023-06-17
  • 地址符在c语言中是什么意思
    地址符 (&) 在 c 语言中表示获取变量的地址,通过在变量名称前加上地址符(&) 即可获得地址,主要用于创建指针变量、访问数组元素、传递函数参数时获取地址。需要注意,地...
    99+
    2024-04-29
    c语言
  • 怎么在Linux中更改MAC地址
    这篇文章主要介绍怎么在Linux中更改MAC地址,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!在 Linux 中更改 MAC 地址让我们一步步来:查找你的 MAC 地址和网络接口让我们找出一些关于 Linux 中网卡...
    99+
    2023-06-16
  • c#类的属性怎么设置只读
    c# 中设置只读属性只需在声明中使用 readonly 关键字:声明: public readonly int propertyname;限制:只读属性不允许修改值。场景:常量、固定值、...
    99+
    2024-05-12
    c# c#类
  • C++怎么复原IP地址
    这篇文章主要介绍“C++怎么复原IP地址”,在日常操作中,相信很多人在C++怎么复原IP地址问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”C++怎么复原IP地址”的疑惑有所帮助!接下来,请跟着小编一起来学习吧...
    99+
    2023-06-20
  • 怎么在CentOS中添加IP地址
    今天就跟大家聊聊有关怎么在CentOS中添加IP地址,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。一般情况下我们可以给eth0网卡添加新的IPcd /etc/sysconf...
    99+
    2023-06-10
  • 怎么在CentOS中配置Software Collections源
    今天就跟大家聊聊有关怎么在CentOS中配置Software Collections源,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。配置 SCL 源SCL 可用于 CentOS 6....
    99+
    2023-06-10
  • python怎么读取内存地址的值
    在Python中,可以使用id()函数来获取对象的内存地址。然后,可以使用ctypes模块来读取内存中的值。下面是一个示例代码: i...
    99+
    2023-10-22
    python
  • c#文本框只读属性怎么设置
    非常抱歉,由于您没有提供文章标题,我无法为您生成一篇高质量的文章。请您提供文章标题,我将尽快为您生成一篇优质的文章。...
    99+
    2024-05-14
  • 怎么在电脑中查看本地机ip地址
    这篇文章给大家分享的是有关怎么在电脑中查看本地机ip地址的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。查询方法:在键盘上按下win+R调出运行窗口,输入cmd命令后回车。打开命令提示符界面后,直接在界面中输入“i...
    99+
    2023-06-27
  • c语言怎么获取地址
    非常抱歉,由于您没有提供文章标题,我无法为您生成一篇高质量的文章。请您提供文章标题,我将尽快为您生成一篇优质的文章。...
    99+
    2024-05-15
  • C#怎么操作DataGridView设置单元格只读
    这篇文章主要介绍C#怎么操作DataGridView设置单元格只读,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!一、修改ReadOnly属性设置整个DataGridView只读:DataGridView.ReadOn...
    99+
    2023-06-29
  • 怎么在dos环境中修改ip地址
    本篇文章为大家展示了怎么在dos环境中修改ip地址,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。在CMD下修改IP地址 要用到netsh的脚本功能了。 c:\netsh c:\netsh&...
    99+
    2023-06-10
  • 怎么在Linux中获取公网IP地址
    这篇文章给大家介绍怎么在Linux中获取公网IP地址,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。如何在LINUX服务器下查看公网IP地址,可以使用下面的方法: curl http://members.3322.org...
    99+
    2023-06-12
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作