C#基础知识总结

C#基础知识之sealed 修饰符是干什么的?

成都创新互联成立10余年来,这条路我们正越走越好,积累了技术与客户资源,形成了良好的口碑。为客户提供成都网站设计、做网站、网站策划、网页设计、域名注册、网络营销、VI设计、网站改版、漏洞修补等服务。网站是否美观、功能强大、用户体验好、性价比高、打开快等等,这些对于网站建设都非常重要,成都创新互联通过对建站技术性的掌握、对创意设计的研究为客户提供一站式互联网解决方案,携手广大客户,共同发展进步。

sealed 修饰符表示密封,用于类时,表示该类不能再被继承,不能和 abstract 同时使用,因为这两个修饰符在含义上互相排斥,用于方法和属性时,表示该方法或属性不能再被继承,必须和 override 关键字一起使用,因为使用 sealed 修饰符的方法或属性肯定是基类中相应的虚成员,通常用于实现第三方类库时不想被客户端继承,或用于没有必要再继承的类以防止滥用继承造成层次结构体系混乱,恰当的利用 sealed 修饰符也可以提高一定的运行效率,因为不用考虑继承类会重写该成员

示例:

 
 
 
  1. using System;  
  2. using System.Collections.Generic;  
  3. using System.Text;  
  4.  
  5. namespace Example06 {   
  6. class Program {   
  7. class A {   
  8. public virtual void F(){   
  9. Console.WriteLine("A.F");  
  10. }   
  11. public virtual void G(){   
  12. Console.WriteLine("A.G");  
  13. }   
  14. class B : A { 
  15. public sealed override void F(){   
  16. Console.WriteLine("B.F");  
  17. }   
  18. public override void G(){   
  19. Console.WriteLine("B.G");  
  20. }   
  21. class C : B { public override void G(){   
  22. Console.WriteLine("C.G");  
  23. }   
  24. static void Main(string[] args){   
  25. new A()。F();new A()。G();  
  26. new B()。F();new B()。G();  
  27. new C()。F();new C()。G();  
  28.  
  29. Console.ReadLine();  

C#基础知识之override 和 overload 的区别?

override 表示重写,用于继承类对基类中虚成员的实现,overload 表示重载,用于同一个类中同名方法不同参数(包括类型不同或个数不同)的实现

示例:

 
 
 
  1. using System;  
  2. using System.Collections.Generic;  
  3. using System.Text;  
  4.  
  5. namespace Example07 {   
  6. class Program {   
  7. class BaseClass {   
  8. public virtual void F(){   
  9. Console.WriteLine("BaseClass.F");  
  10. }   
  11. class DeriveClass : BaseClass {   
  12. public override void F(){   
  13. base.F();  
  14. Console.WriteLine("DeriveClass.F");  
  15. }   
  16. public void Add(int Left, int Right){   
  17. Console.WriteLine("Add for Int: {0}", Left + Right);  
  18. }   
  19. public void Add(double Left, double Right){   
  20. Console.WriteLine("Add for int: {0}", Left + Right);  
  21. }   
  22. static void Main(string[] args){   
  23. DeriveClass tmpObj = new DeriveClass();  
  24. tmpObj.F();  
  25. tmpObj.Add(1, 2);  
  26. tmpObj.Add(1.1, 2.2);  
  27.  
  28. Console.ReadLine();  

C#基础知识之什么是索引指示器?

实现索引指示器(indexer)的类可以象数组那样使用其实例后的对象,但与数组不同的是索引指示器的参数类型不仅限于int,简单来说,其本质就是一个含参数属性

示例:

 
 
 
  1. using System;  
  2. using System.Collections.Generic;  
  3. using System.Text;  
  4.  
  5. namespace Example08 {   
  6. public class Point {   
  7. private double x, y;  
  8. public Point(double X, double Y){   
  9. x = Xy = Y;  
  10. }   
  11. //重写ToString方法方便输出  
  12. public override string ToString(){   
  13. return String.Format("X: {0} , Y: {1}", x, y);  
  14. }   
  15. public class Points {   
  16. Point[] points;public Points(Point[] Points){   
  17. points = Points;  
  18. }   
  19. public int PointNumber {   
  20. get {   
  21. return points.Length;  
  22. }   
  23. //实现索引访问器public Point this[int Index] {   
  24. get { return points[Index];  
  25. }  
  26.  
  27. //感谢watson hua(http://huazhihao.cnblogs.com/)的指点  
  28. //索引指示器的实质是含参属性,参数并不只限于int class WeatherOfWeek {   
  29. public string this[int Index] {   
  30. get {   
  31. //注意case段使用return直接返回所以不需要break switch (Index){   
  32. case 0:{   
  33. return "Today is cloudy!";  
  34. }   
  35. case 5:{   
  36. return "Today is thundershower!";  
  37. }   
  38. default:{   
  39. return "Today is fine!";  
  40. }   
  41. public string this[string Day] {   
  42. get {   
  43. string TodayWeather = null;  
  44. //switch的标准写法switch (Day){   
  45. case "Sunday":{   
  46. TodayWeather = "Today is cloudy!";break;  
  47. }   
  48. case "Friday":{   
  49. TodayWeather = "Today is thundershower!";  
  50. break;  
  51. }   
  52. default:{   
  53. TodayWeather = "Today is fine!";break;  
  54. }   
  55. return TodayWeather;  
  56. }   
  57. class Program {   
  58. static void Main(string[] args){   
  59. Point[] tmpPoints = new Point[10];  
  60. for (int i = 0; i < tmpPoints.Length; i++){   
  61. tmpPoints[i] = new Point(i, Math.Sin(i));  
  62. }  
  63.  
  64. Points tmpObj = new Points(tmpPoints);  
  65. for (int i = 0; i < tmpObj.PointNumber; i++){   
  66. Console.WriteLine(tmpObj[i]);}  
  67.  
  68. string[] Week = new string[] {   
  69. "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Staurday"  
  70. }  
  71. WeatherOfWeek tmpWeatherOfWeek = new WeatherOfWeek();  
  72. for (int i = 0; i < 6; i++){   
  73. Console.WriteLine(tmpWeatherOfWeek[i]);  
  74. }   
  75. foreach (string tmpDay in Week){   
  76. Console.WriteLine(tmpWeatherOfWeek[tmpDay]);  
  77. }  
  78.  
  79. Console.ReadLine();  

网站名称:C#基础知识总结
转载源于:http://www.shufengxianlan.com/qtweb/news43/503093.html

网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联