.NET/C#汇总 —— 集合、异常、泛型、LINQ、委托、EF

集合

1. IList 接⼝与List的区别是什么?

        IList 泛型接⼝是 Icollection 接⼝的⼦代,并且是所有⾮泛型列表的基接⼝。 Ilist 实现有三种类别:只 读、固定⼤⼩、可变⼤⼩。 ⽆法修改只读 Ilist。 固定⼤⼩的 Ilist 不允许添加或移除元素,但允许修改 现有元素。 可变⼤⼩的 Ilist 允许添加、移除和修改元素。

        IList 是个接⼝,定义了⼀些操作⽅法这些⽅法要你⾃⼰去实现,当你只想使⽤接⼝的⽅法时,这种⽅式⽐ 较好.他不获取实现这个接⼝的类的其他⽅法和字段,有效的节省空间。

List 是个类型 已经实现了IList 定义的那些⽅法。

List List11 =new List ();

是想创建⼀个List,⽽且需要使⽤到List的功能,进⾏相关操作。 ⽽只是想创建⼀个基于接⼝IList的对象的实例,只是这个接⼝是由List实现的。所以它只是希望使⽤到 IList接⼝规定的功能⽽已。

IList IList11 =new List ();

2.泛型的主要约束和次要约束是什么?

        当⼀个泛型参数没有任何约束时,它可以进⾏的操作和运算是⾮常有限的,因为不能对实参进⾏任何类 型上的保证,这时候就需要⽤到泛型约束。

        泛型的约束分为:主要约束和次要约束,它们都使实参必须 满⾜⼀定的规范,C#编译器在编译的过程中可以根据约束来检查所有泛型类型的实参并确保其满⾜约束条件。

        (1)主要约束 ⼀个泛型参数⾄多拥有⼀个主要约束,主要约束可以是⼀个引⽤类型、class或者struct。如果指定⼀个 引⽤类型(class),那么实参必须是该类型或者该类型的派⽣类型。相反,struct则规定了实参必须是 ⼀个值类型。下⾯的代码展示了泛型参数主要约束:

public class ClassT1<T> where T : Exception
{private T myException;public ClassT1(T t)
{myException = t;}public override string ToString()
{// 主要约束保证了myException拥有source成员return myException.Source;}
}
public class ClassT2<T> where T : class
{private T myT;public void Clear()
{// T是引⽤类型,可以置nullmyT = null;}
}
public class ClassT3<T> where T : struct
{private T myT;public override string ToString()
{// T是值类型,不会发⽣NullReferenceException异常return myT.ToString();}

        (2)次要约束 次要约束主要是指实参实现的接⼝的限定。对于⼀个泛型,可以有0到⽆限的次要约束,次要约束规定 了实参必须实现所有的次要约束中规定的接⼝。次要约束与主要约束的语法基本⼀致,区别仅在于提供 的不是⼀个引⽤类型⽽是⼀个或多个接⼝。例如我们为上⾯代码中的ClassT3增加⼀个次要约束:

public class ClassT3<T> where T : struct, IComparable
{...... 
}

3. 如何把⼀个array复制到arrayist⾥?

foreach( object arr in array)
{arrayist.Add(arr);
}

4.List, Set, Map是否继承⾃Collection接⼝?

List,Set是,Map不是。

5. Set⾥的元素是不能重复的,那么⽤什么⽅法来区分重复与否呢? 是⽤==还是equals()? 它们有 何区别?

        Set⾥的元素是不能重复的,那么⽤iterator()⽅法来区分重复与否。equals()是判读两个Set是否相等。 equals()和==⽅法决定引⽤值是否指向同⼀对像,equals()在类中被覆盖,为的是当两个分离的对象的 内容和类型相配的话,返回真值。

6.有50万个int类型的数字,现在需要判断⼀下⾥⾯是否存在重复的数字,请你简要说⼀下思路。

  • 1.使⽤C#的List集合⾃带的去重⽅法,例如 Distinct(),GroupBy()等
  • 2.利⽤ Dictionary 的Key值唯⼀的特性,HashSet 元素值唯⼀的特性 进⾏判断

7.数组有没有length()这个⽅法? String有没有length()这个⽅法?

数组没有length()这个⽅法,有length的属性。String有有length()这个⽅ 法。

8.⼀个整数List中取出最⼤数(找最⼤值)。不能⽤Max⽅法。

private static int GetMax(List<int> list){int max = list[0];for (int i = 0; i < list.Count; i++){if (list[i]>max){max = list[i];}}return max;}

9. C#异常类有哪些信息?

C#中,所有异常都继承⾃System.Exception类,Exception类定义了C#异常应该具有的信息和⽅法。 值得注意的属性有:

public virtual string Message { get; }// 错误的信息,⽂字描述
public virtual string StackTrace { get; }// 发⽣异常的调⽤堆栈信息
public System.Reflection.MethodBase TargetSite { get; }//引发这个错误的⽅法
public Exception InnerException { get; }// ⼦异常

10. 如何创建⼀个⾃定义异常?

根据类继承原则和异常处理原则,我们可以使⽤以下⽅式来⾃定义⼀个类:

public class CustomException : Exception
{
}

11. 利⽤IEnumerable实现斐波那契数列⽣成?

IEnumerable<int> GenerateFibonacci(int n)
{if (n >= 1) yield return 1;int a = 1, b = 0;for (i

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/814278.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Django模型入门

Django模型入门 为了能够学会使用Django模型&#xff0c;本节通过构建一个实际的Django模型来帮助读者尽快入门。 3.2.1 定义模型 既然Django模型实现了ORM功能&#xff0c;那么它就是对数据库实例的描述和实现。下面&#xff0c;我们通过一个简单的实例进行讲解。 如果需…

C语言-详解内存函数

文章目录 1.memcpy使用和模拟实现1.1 memcpy函数的使用规则1.2 memcpy函数的使用1.2 模拟实现memcpy函数 2.memmove 函数的使用和模拟实现2.1 memmove 函数使用规则2.2 memmove函数的使用2.3 模拟实现memmove函数2.3.1 从后往前移2.3.2 从前往后移 2.4 算法实现2.4.1 从前往后移…

机器学习之特征选择(Feature Selection)

1 引言 特征提取和特征选择作为机器学习的重点内容&#xff0c;可以将原始数据转换为更能代表预测模型的潜在问题和特征的过程&#xff0c;可以通过挑选最相关的特征&#xff0c;提取特征和创造特征来实现。要想学习特征选择必然要了解什么是特征提取和特征创造&#xff0c;得…

算法100例(持续更新)

算法100道经典例子&#xff0c;按算法与数据结构分类 1、祖玛游戏2、找下一个更大的值3、换根树状dp4、一笔画完所有边5、树状数组&#xff0c;数字1e9映射到下标1e56、最长回文子序列7、超级洗衣机&#xff0c;正负值传递次数8、Dijkstra9、背包问题&#xff0c;01背包和完全背…

React Hooks 全解: 常用 Hooks 及使用场景详解

React Hooks 是 React 16.8 版本引入的一项重要特性,它极大地简化和优化了函数组件的开发过程。 React 中常用的 10 个 Hooks,包括 useState、useEffect、useContext、useReducer、useCallback、useMemo、useRef、useLayoutEffect、useImperativeHandle 和 useDebugValue。这些…

计算机网络——实现smtp和pop3邮件客户端

实验目的 运用各种编程语言实现基于 smtp 协议的 Email 客户端软件。 实验内容 1. 选择合适的编程语言编程实现基于 smtp 协议的 Email 客户端软件。 2. 安装 Email 服务器或选择已有的 Email 服务器&#xff0c;验证自己的 Email 客户端软件是否能进行正常的 Email 收发功…

GAMS104 现代游戏引擎 2

渲染的难点可以分为一下三部分&#xff1a;如何计算入射光线、如何考虑材质以及如何实现全局光照。 渲染的难点之一在于阴影&#xff0c;或者说是光的可见性。如何做出合适的阴影效果远比想象中要难得多&#xff0c;在实践中往往需要通过大量的技巧才能实现符合人认知的阴影效…

基于React Router6 TS实现路由守卫

定义路由表 import {BrowserRouter, Route, RouteObject, Routes,} from "react-router-dom"; import {Home, Login, NotFound} from "/views"; import {RouterGuard} from "/routers/router_guard.tsx"; import {ReactNode} from "react&…

js实现webp转png/jpg

网上保存的图片是webp类型的&#xff0c;但是我把它嵌入flac格式的音频里后导致网页中无法播放 wps要会员&#xff0c;真麻烦。 完整代码&#xff1a; <!DOCTYPE html> <html lang"zh-CN"> <head> <meta charset"UTF-8">…

OpenHarmony实例应用:【常用组件和容器低代码】

介绍 本篇Codelab是基于ArkTS语言的低代码开发方式实现的一个简单实例。具体实现功能如下&#xff1a; 创建一个低代码工程。通过拖拽的方式实现任务列表和任务信息界面的界面布局。在UI编辑界面实现数据动态渲染和事件的绑定。 最终实现效果如下&#xff1a; 相关概念 低代…

leetcode刷题记录 day21

每日一题 找到冠军 I 一场比赛中共有 n 支队伍&#xff0c;按从 0 到 n - 1 编号。 给你一个下标从 0 开始、大小为 n * n 的二维布尔矩阵 grid 。对于满足 0 < i, j < n - 1 且 i ! j 的所有 i, j &#xff1a;如果 grid[i][j] 1&#xff0c;那么 i 队比 j 队 强 &a…

Tuxera Ntfs for mac 2023中文解锁版安装、密钥下载与激活教程 Tuxera激活码 tuxera破解

Tuxera Ntfs for mac2023是Mac中专用于读写外置存储的工具&#xff0c;具有强大的磁盘管理和修复功能&#xff0c;它在Mac上完全读写NTFS格式硬盘&#xff0c;快捷的访问、编辑、存储和传输文件。能够在 Mac 上读写 Windows NTFS 文件系统。Tuxera NTFS 实现在Mac OS X系统读写…

2024妈妈杯数学建模A 题思路分析-移动通信网络中 PCI 规划问题

# 1 赛题 A 题 移动通信网络中 PCI 规划问题 物理小区识别码(PCI)规划是移动通信网络中下行链路层上&#xff0c;对各覆盖 小区编号进行合理配置&#xff0c;以避免 PCI 冲突、 PCI 混淆以及 PCI 模 3 干扰等 现象。 PCI 规划对于减少物理层的小区间互相干扰(ICI)&#xff0c;增…

Java基础_19 IO流【重点】

1.File类会将此磁盘上面的文件或者文件夹抽象成为一个对象&#xff0c;可以拿对象调用方法来对咱们的文件或者文件夹操作(创建,删除&#xff0c;各种判断&#xff0c;查询)File类很多的方法createNewFilemkdirmkdirsdeleteisFileisDirectorygetNamegetPathgetParent2.递归算法【…

mysql搭建主从

mysql搭建主从: 1:拉取mysql镜像 docker pull mysql2:创建主从对应目录 3:建立一个简易的mysql docker run -it --name mytest -e MYSQL_ROOT_PASSWORD123 -d mysql4:进入这个简易的mysql;从中获取my.cnf文件 docker exec -it mytest bash5:从容器中将my.cnf拷贝到 /3306/c…

rspack 使用构建vue3脚手架

基于 Rust 的高性能 Web 构建工具。rspack 主要适配 webpack 生态&#xff0c;对于绝大多数 webpack 工具库都是支持的。 启动速度快&#xff1b;增量热更新快。兼容 webpack 生态&#xff1b;内置了 ts、jsx、css、css modules 等开箱即用。生产优化&#xff0c;tree shaking…

游戏内鼠标光标样式切换

参考自 通过程序设置鼠标的样式 - CodeBus 代码生成 .cur 文件附带详细注释-CSDN博客 读取当前目录里的鼠标文件 .cur // 程序名称&#xff1a;设置鼠标样式的范例 // 编译环境&#xff1a;Visual C 6.0~2022&#xff0c;EasyX_20220116 // #include <graphics.h> #in…

树莓派驱动开发--搭建环境篇(保姆级)

前言&#xff1a;树莓派的环境搭建关系到之后的驱动开发&#xff0c;故一个好的环境能让你顺手完成驱动开发&#xff01;我使用的是64位树莓派4b&#xff01;有显示屏的前提&#xff01;&#xff01;&#xff01;&#xff08;因为wifi连接太刁钻了&#xff09; 一、ubantu相关 …

java算法:反转数字

看算法描述&#xff1a; 1、给你一个 32 位的有符号整数 x &#xff0c;返回将 x 中的数字部分反转后的结果。 2、如果反转后整数超过 32 位的有符号整数的范围 [−231, 231 − 1] &#xff0c;就返回 0。 3、假设环境不允许存储 64 位整数&#xff08;有符号或无符号&…

Linux如何安装kernel-debuginfo包以支持获取未压缩内核映像vmlinux?(yum | wget、rpm -ivh)

基础信息 本文以AnolisOS为例子&#xff0c;Centos和Ubuntu类似&#xff0c;核心都是安装kernel-debuginfo和kernel-debuginfo-common的rpm包 并且需要和内核版本子版本完全一致&#xff08;本质是使用同一份代码编译的&#xff09;假设系统安装的是8.6版本&#xff1a;比如ht…