C#中怎么将一个List转换为只读的

如题,主要使用AsReadOnly这个方法就可以了


代码如下:

List<int> a = new List<int> {1, 2, 3, 4, 5};

IList<int> b = a.AsReadOnly(); // block modification...

IList<int> c = b.AsWritable(); // ... but unblock it again

c.Add(6); 
Debug.Assert(a.Count == 6); // we've modified the original

IEnumerable<int> d = a.Select(x => x); // okay, try this...

IList<int> e = d.AsWritable(); // no, can still get round it

e.Add(7);

(0)

相关推荐

  • C#反射(Reflection)对类的属性get或set值实现思路

    近段时间,有朋友叫Insus了解一下反射(Reflection)方面的知识,反射提供了封装程序集.模块和类型的对象(Type类型).可以使用反射动态创建类型的实例,将类型绑定到现有对象,或从现有对象获取类型并调用其方法或访问其字段和属性.如果代码中使用了属性,可以利用反射对它们进行访问. 下面的例子,是Insus练习对一个类别的属性进行set和get值. 首先写一个类,再写一个可读写的属性: 复制代码 代码如下: using System; using System.Collections.Ge

  • C#反射技术的简单操作(读取和设置类的属性)

    要想对一个类型实例的属性或字段进行动态赋值或取值,首先得得到这个实例或类型的Type,微软已经为我们提供了足够多的方法. 首先建立一个测试的类 复制代码 代码如下: public class MyClass { public int one { set; get; } public int two { set; get; } public int five { set; get; } public int three { set; get; } public int four { set; ge

  • c#只读字段和常量的区别,以及静态构造函数的使用实例

    复制代码 代码如下: using System;using System.Collections.Generic;using System.Linq;using System.Text; namespace ConsoleApplication1{    /// <summary>    /// 作者:it小金    /// 功能:c#只读字段和常量的区别,以及静态构造函数的使用    /// </summary>    class Program    {        stat

  • C#类中的属性使用总结(详解类的属性)

    复制代码 代码如下: private int dd;  public int dd  {      get{ return xx*3;}      set{ xx = value/3;}  } 没有set的属性是一种只读属性,没有get的访问器是一种只写属性.(1) get访问器用来返回字段或者计算 并返回字段,它必须以return或者throw终结. 复制代码 代码如下: private string name;  public string Name  {      get      { 

  • C#类中属性与成员变量的使用小结

    属性实际上和成员变量没什么区别,属性代表类的某种特征, 让人更好理解而已. 使用中注意问题:1.属性名和变量名不能相同, 2.一般变量都是private,属性都是public的,属性用于给类外调用,变量限于类内使用,感觉封装性体现得要好些 3.属性必须和一个变量相联系,而这个变量必须要在类中定义.如果不定义,用成如下方法: 复制代码 代码如下: public int b //定义一个属性b  {      get   {    return b;   }   set   {    b = val

  • C#中常量和只读变量的区别小结

    常量和只读变量有以下区别: 1.常量必须在声明时就被初始化,指定了值后就不能修改了.只读字段可以在声明时被初始化,也可以在构造函数中指定初始化的值,在构造以后值就不能修改. 2.常量是静态的,而只读字段可以是静态和动态的 3.Const可以用在字段和局部变量,readonly只可以修饰字段

  • C#关于类的只读只写属性实例分析

    C#中属性的目的是对字段的封装,是为了程序数据的安全性考虑的.本文即以实例形式对C#中只读只写属性进行剖析. 对于只读或只写的属性定义: 1.不写入其中一个get\set方法即可只读或只写 比如: private int a; public int A{ get { return a; } } 2.用private进行保护,类外同样意味着只读或只写 比如: private int a; public int A{ private get { return a; } set { a = value

  • C#中怎么将一个List转换为只读的

    如题,主要使用AsReadOnly这个方法就可以了 复制代码 代码如下: List<int> a = new List<int> {1, 2, 3, 4, 5}; IList<int> b = a.AsReadOnly(); // block modification... IList<int> c = b.AsWritable(); // ... but unblock it again c.Add(6);  Debug.Assert(a.Count ==

  • C#实现将一个字符转换为整数

    按标题的要求将一个字符转换为整数.实现此功能,也有好几个方法 方法一:Convert.ToInt32(string): 运行代码: 方法二: int.Parse(object): 运行结果: 这个字符正好是数字的字符串,使用int.Parse()是没有任何问题,但是如果这个是非数字的字符串呢? 运行时,出现异常了: 方法三:Int.TryParse(obj) 此方法,可以很好解决方法的异常问题,如异常抛出时,它返回0: 运行结果: 经过上面的各种方法或是运行的情况,我们是否有一个综合性的方法呢?

  • python中如何将一个JSON文档映射为Python对象

    目录 一.将一个JSON文档映射为Python对象 第一种方法 第二种方法 二.总结 前言: 文章主要包括一下三个部分: 考点:loads函数的用法. 面试题:如何将一个JSON文档映射为Python对象? 解析 一.将一个JSON文档映射为Python对象 第一种方法 供我们读取的JSON文件是test.json,文件内容如下: { "name": "孤寒者", "age": 18, "height": 130 } 首先,我

  • php自定义函数br2nl实现将html中br换行符转换为文本输入中换行符的方法【与函数nl2br功能相反】

    本文实例讲述了php自定义函数br2nl实现将html中br换行符转换为文本输入中换行符的方法.分享给大家供大家参考,具体如下: 下面这几个方法将能够帮你解决这个问题. PHP版将html中的<br />换行符转换为文本框中的换行符: 代码如下: function br2nl($text){ return preg_replace('/<br\\s*?\/??>/i','',$text); } 或者 代码如下: function br2nl($text){ $text=preg_r

  • Java中Json字符串直接转换为对象的方法(包括多层List集合)

    使用到的类:net.sf.json.JSONObject 使用JSON时,除了要导入JSON网站上面下载的json-lib-2.2-jdk15.jar包之外,还必须有其它几个依赖包:commons-beanutils.jar,commons-httpclient.jar,commons-lang.jar,ezmorph.jar,morph-1.0.1.jar 下面是例子代码: // JSON转换 JSONObject jsonObj = JSONObject.fromObject(jsonStr

  • js以分隔符分隔数组中的元素并转换为字符串的方法

    如下所示: <html> <body> <script type="text/javascript"> var arr = new Array(3) ; arr[0] = "Jani"; arr[1] = "Hege"; arr[2] = "Stale"; document.write(arr.join() + "<br />");//默认情况下不提供分隔符,

  • C#中字段、属性、只读、构造函数赋值、反射赋值的问题

    C#中字段.属性和构造函数赋值的问题提出问题如下所述: 首先提出几个问题: 1.如何实现自己的注入框架? 2.字段和自动属性的区别是什么? 3.字段和自动属性声明时的直接赋值和构造函数赋值有什么区别? 4.为什么只读字段和只读自动属性(只有get没有set访问器)都可以在构造函数中进行赋值? 5.反射可以给只读字段或者只读属性进行赋值吗? 6.自动属性和普通属性的区别? 这些问题是我在试着写自己的注入实现时遇到的问题.这些问题应该在学习C#时的第一节课就应该学到了,我看网上还有人分享说他在面试时

  • Oracle如何批量将表中字段名全转换为大写(利用简单存储过程)

    前言 今天查询一个数据字段一直提示字符无效,明明在数据库表字段中是存在的: 查询后得知,数据库表字段为小写时,查询需要将字段名小写并加上双引号: 表名同理,我这里表名是大写,暂时不需要改. 搜到一个批量修改字段名为大写的存储过程,如下: 登陆到要修改的用户下, 执行: begin for cl in (SELECT table_name,column_name from user_tab_columns WHERE column_name<>upper(column_name) and upp

  • python中24小时制转换为12小时制的方法

    12-24小时制 编写一个程序,要求用户输入24小时制的时间,然后显示12小时制的时间. 输入格式: 输入在一行中给出带有中间的:符号(半角的冒号)的24小时制的时间,如12:34表示12点34分.当小时或分钟数小于10时,均没有前导的零,如5:6表示5点零6分. 提示:在scanf的格式字符串中加入:,让scanf来处理这个冒号. 输出格式: 在一行中输出这个时间对应的12小时制的时间,数字部分格式与输入的相同,然后跟上空格,再跟上表示上午的字符串AM或表示下午的字符串PM.如5:6 PM表示

  • C#中把字符串String转换为整型Int的小例子

    本文介绍如何在使用C#开发程序时,将一个字符串String变量的值转换为一个整型Int变量. 比如,我们在C#中定义一个字符串变量,用它来获取一个xml中的值.小编这里并不是故意要用一个字符串去获取xml节点的值,而是使用InnerText的方式获取的值必须是字符串String类型的. 复制代码 代码如下: string tmpValue = ""; tmpValue = xml.DocumentElement["expirydays"].InnerText.Tri

随机推荐