&和&&的区别
相同点
&和&&都可作逻辑与的运算符,表示逻辑与(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