首页 > 编程语言 >C#/.net面试知识点总结

C#/.net面试知识点总结

时间:2022-09-03 18:11:09浏览次数:71  
标签:返回 知识点 定义 委托 C# 重载 && 类型 net

&和&&的区别

相同点

&和&&都可作逻辑与的运算符,表示逻辑与(and),当运算符两边的表达式的结果都为true时,其结果 才为true,否则,只要有⼀⽅为false,则结果为false。(ps:当要⽤到逻辑与的时候&是毫⽆意义,&本身就不是⼲这个的)

不同点

if(loginUser!=null&&string.IsnullOrEmpty(loginUser.UserName))

&&具有短路的功能,即如果第⼀个表达式为false,则不再计算第⼆个表达式,对于上⾯的表达式,当loginUser为null时,后⾯的表达式不会执⾏,所以不会出现NullPointerException如果将&&改为&,则会    抛出NullPointerException异常。(ps:所以说当要⽤到逻辑与的时候&是毫⽆意义的)

& 是⽤作位运算的。

总结

&是位运算,返回结果是int类型  &&是逻辑运算,返回结果是bool类型

重写和重载的区别?

 重写⽅法:关键字⽤override修饰,派⽣类重写基类的⽅法,⽅法命名、返回类型,参数必须相同 重载⽅法:⽅法名必须相同,参数列表必须不相同,返回类型可以不相同。

作⽤:重写主要是实现⾯向对象的多态性、重载主要是实现实例化不同的对象

什么时候⽤重载?什么时候⽤重写?

当⼀个类需要⽤不同的实现来做同⼀件事情,此时应该⽤重写,⽽重载是⽤不同的输⼊做同⼀件事情

委托是什么?

委托是寻址的.NET版本。在C++中,函数指针只不过是⼀个指向内存位置的指针,它不是类型安全的。我 们⽆法判断这个指针实际指向什么,像参数和返回类型等项久更⽆从知晓了。

⽽.NET委托完全不同,委托是类型安全的类,它定义了返回类型和参数的类型。委托类不仅包含对⽅法的 引⽤,也可以包含对多个⽅法的引⽤。理解委托的⼀个要点是它们的安全性⾮常⾼。在定义委托时,必须给出它所表示的⽅法的签名和返回类型  等全部细节。理解委托的⼀种⽐较好的⽅式是把委托当作这样⼀件事情:它给⽅法的签名和返回类型指定名称。其语法类似于⽅法的定义,需要在定义⽅法的前⾯加上delegate关键字。定义委托基本上就是定义⼀个新 的类,所以可以在任何地⽅定义类的相同地⽅定义委托,也就是说,可以在另⼀个类的内部定义,也可以  在任何类的外部定义,还可以在名称控件中把委托定义为定义为顶层对象。访问修饰符可以是public/private/protected等。

.NET默认的委托类型有哪⼏种?

1. Action < T >

 泛型Action委托表示引⽤⼀个void返回类型的⽅法。这个委托类存在16种重载⽅法。

例如Action<in T1,In T2>调⽤没有参数的⽅法2.Func< T >

Func调⽤带返回类型的⽅法。有16种重载⽅法。

 例如Func委托类型可以调⽤带返回类型且⽆参数的⽅法,Func<in T,out TResult>委托类型调⽤带有4个参数和⼀个返回类型的⽅法。

 什么是泛型委托?

 Action就是泛型委托。注意事项:

建议尽量使⽤这些委托类型,⽽不是在代码中定义更多的委托类型。这样可以减少系统中的类型数⽬,同时简化编码

如果需要使⽤ref或out关键字,以传引⽤的⽅式传递⼀个参数,就可能不得不定义⾃⼰的委托: delegate void Test(ref int i)

如果委托要通过C#的params关键字获取可变数量的额参数,要为委托的任何桉树指定默认值,或者要 对委托的泛型类型参数进⾏约束,也必须定义⾃⼰的委托类型

 delegate void EventHandler(Object sender, TEventArgs e) where TEventArgs : EventArgs;

 使⽤获取泛型实参和返回值的委托时,可利⽤逆变与协变。逆变:⽗类转换为⼦类;协变:⼦类转换为⽗类

延迟执⾏ (Lazy Loading)是什么?

⼤部分LINQ语句是在最终结果的第⼀个元素被访问的时候(即在foreach中调⽤MoveNext⽅法)才真正开始运算的,这个特点称为延迟执⾏。⼀般来说,返回另外⼀个序列(通常为IEnumerable或IQueryable)的操作,使⽤延迟执⾏,⽽返回单⼀值的运算,使⽤⽴即执⾏。IEnumerable是延迟执⾏的,当没有触发执⾏时,就不会进⾏任何运算。Select⽅法不会触发LINQ的执

⾏。⼀些触发的⽅式是:foreach循环,ToList,ToArray,ToDictionary⽅法等

 

标签:返回,知识点,定义,委托,C#,重载,&&,类型,net
From: https://www.cnblogs.com/aikeming/p/16653240.html

相关文章

  • typeof 和 instanceof 判断值类型
    两者的作用typeof运算符能区分原始值和对象,并检测出原始值的类型。instanceof运算符可以检测一个对象是否是特定构造函数的一个实例。typeof值结果undefi......
  • Eclipse配置Tomcat搭建java Web (JSP)开发环境
    配置Tomcat服务1.打开窗口-首选项-Server-RuntiomeEnvironments2.点击ADD,选择对应的Tomcat版本,点击下一步路径选择Tomcat解压后的文件夹目录,点击完成并保存创建动......
  • ASP.NET Core 实战-6.绑定模型:检索和验证用户输入
    理解RazorPages和MVC中的模型MVC就是关注点分离。前提是通过隔离应用程序的每个方面以专注于单一职责,它可以减少系统中的相互依赖性。这种分离使得在不影响应用程......
  • XCPC集训48
    A-SquareString?/* qwq!*/#include<iostream>#include<algorithm>#include<cstring>#include<cstdio>#include<map>#include<vector>#include<queue>......
  • leetcode 77 组合 C/C++ 深度优先搜索
    #include<iostream>#include<vector>usingnamespacestd;classSolution{public:voidrecursive(intn,intk,intvalue,intindex,vector<int>&com_case,ve......
  • docker搭建宝塔
    使用docker拉取centos基础镜像,用容器启动该基础镜像,直接在这个容器中部署1.拉取centos系统镜像dockerpullcentos:7.2.15112.启动镜像,映射主机与容器内8888(宝塔面板)......
  • 36th CChO 国初 游记
    Day-5到了杭州,但是是看病确诊了强直性脊柱炎,以后就和残疾人差不多了Day-4在校上课,无事可记Day-3在校上课,无事可记Day-2名校协作体考试,语文裂开了英语那篇读后......
  • Substance 3D Painter for mac(pt 3D绘画软件)中文版
    Substance3DDesignerformac是一款Adobe全新发布的AdobeSubstance3D系列应用软件之一的三维材质纹理制作软件,可以在3D中绘画,实时,使用此行业标准应用程序实时纹理3D......
  • 微信小程序websocket的使用
    微信小程序中使用websocket分为两步:一、现在微信公众平台的开发者工具中配置socket的域名   二、开始编写业务代码业务代码大致可以分成三个步骤:a.发起请求,建立......
  • ARC146 部分题解
    A普及组题//byBalloons#include<cstdio>#include<cstring>#include<iostream>#include<algorithm>#definemprmake_pair#definedebug()cerr<<"Madoka"<<e......