Microsoft地址

List<T>的IndexOf()方法

如果T是值类型的,就按照比较值的方法从列表的第一个元素开始逐个匹配,如果T是引用类型,就比较引用是否相同

举例如下:

class A
{
     public int x;
     public A(int x)
     {
          this.x = x;
     }
}
 
List<A> listA = new List<A>();
listA.Add( new A(3) );
listA.Add( new A(4) );
listA.Add( new A(5) );
listA.Add( new A(54) );
Console.WriteLine( listA.IndexOf( new A(3) ) );

自定义的类是引用类型,因此IndexOf按照比较引用的方式查找元素,当然找不到,打印-1,如果A被定义成结构体,则可以找到该元素,打印0

Remove方法也是这个道理,移除的方式取决于T的类型

只是HashSet<T>和List<T>的Remove方法稍有不同:

HashSet<T>中不允许有重复元素而List<T>允许,HashSet<T>调用Remove方法后 如果移除成功,就可以判断这个集合中已经不存在刚刚被移出去的元素,而List<T>调用Remove(t1)方法后只移除掉第一个匹配到的 元素,不能保证此集合中没有其他的与t1相等的元素存在。

List<T>的IndexOf方法和Remove方法的更多相关文章

  1. JavaScript indexOf() 方法和 lastIndexOf() 方法

    一,定义和用法 indexOf() 方法可返回某个指定的字符串值在字符串中首次出现的位置. lastIndexOf() 方法可返回一个指定的字符串值最后出现的位置,在一个字符串中的指定位置从后向前搜索 ...

  2. poll() 方法和 remove() 方法的区别?

    poll() 和 remove() 都是从队列中取出一个元素,但是 poll() 在获取元素失败 的时候会返回空,但是 remove() 失败的时候会抛出异常.

  3. ASP.NET Core 中文文档 第二章 指南(4.10)检查自动生成的Detail方法和Delete方法

    原文 Examining the Details and Delete methods 作者 Rick Anderson 翻译 谢炀(Kiler) 校对 许登洋(Seay).姚阿勇(Mr.Yao) 打 ...

  4. ThinkPHP的D方法和M方法的区别

    M方法和D方法的区别 ThinkPHP 中M方法和D方法都用于实例化一个模型类,M方法 用于高效实例化一个基础模型类,而 D方法 用于实例化一个用户定义模型类. 使用M方法 如果是如下情况,请考虑使用 ...

  5. Hibernate中evict方法和clear方法说明

    Hibernate中evict方法和clear方法说明 先创建一个对象,然后调用session.save方法,然后调用evict方法把该对象清除出缓存,最后提交事务.结果报错: Exception i ...

  6. Android HTTP实例 使用GET方法和POST方法发送请求

    Android HTTP实例 使用GET方法和POST方法发送请求 Web程序:使用GET和POST方法发送请求 首先利用MyEclispe+Tomcat写好一个Web程序,实现的功能就是提交用户信息 ...

  7. virtual方法和abstract方法

    在C#的学习中,容易混淆virtual方法和abstract方法的使用,现在来讨论一下二者的区别.二者都牵涉到在派生类中与override的配合使用. 一.Virtual方法(虚方法) virtual ...

  8. wait方法和sleep方法的区别

    一.概念.原理.区别 Java中的多线程是一种抢占式的机制而不是分时机制.线程主要有以下几种状态:可运行,运行,阻塞,死亡.抢占式机制指的是有多个线程处于可运行状态,但是只有一个线程在运行.      ...

  9. M方法和D方法的区别

    M方法和D方法的区别 ThinkPHP 中M方法和D方法都用于实例化一个模型类,M方法 用于高效实例化一个基础模型类,而 D方法 用于实例化一个用户定义模型类. 使用M方法 如果是如下情况,请考虑使用 ...

随机推荐

  1. requirejs下载与配置

    写在开始: requirejs有中文版api文档,可以访问http://www.requirejs.cn/home.html 下载requirejs 访问http://www.requirejs.cn ...

  2. js window.open 参数设置

    function OpenWin(type, obj){ window.open ("http://www.baidu.com" + type, "_blank" ...

  3. Spring+Maven+Eclipse构建Web工程

    转载请注明出处:http://www.cnblogs.com/lidabnu/p/5657439.html 1 环境准备 下载Eclipse:http://www.eclipse.org/downlo ...

  4. 这样写JS的方式对吗?

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  5. 02_Jquery_04_属性选择器

    [简述] [index.jsp] <%@ page language="java" import="java.util.*" pageEncoding=& ...

  6. 07_MyBatis原始的Dao编写方法

    [UserDao.java ] package com.Higgin.Mybatis.dao; import com.Higgin.Mybatis.po.User; public interface ...

  7. 【转】Java编程之字符集问题研究

    发现这是对字集说得最明了的一篇文章了. 转发自:http://tomcat-oracle.iteye.com/blog/2037160 1. 概述 本文主要包括以下几个方面:编码基本知识,java,系 ...

  8. 对 HTTP 304 的理解(转)

    最近和同事一起看Web的Cache问题,又进一步理解了 HTTP 中的 304 又有了一些了解. 304 的标准解释是:Not Modified 客户端有缓冲的文档并发出了一个条件性的请求(一般是提供 ...

  9. Python学习笔记——面向对象基础

    1.类和实例 1.1类的定义 类的定义使用class关键字,其后紧跟类名(通常大写开头),紧接着是(object),object是该类继承的类名,没有就继承object类. 实例化时就是类名+(),有 ...

  10. CPU/寄存器/内存

    因为要了解多线程,自然少不了一些硬件知识的科普,我没有系统学习过硬件知识,仅仅是从书上以及网络上看来的,如果有错误请指出来. CPU,全名Central Processing Unit(中央处理器). ...