打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
C#别名指示符学习经验

C#语言有很多值得学习的地方,这里我们主要介绍C#别名指示符,包括介绍C#别名指示符在所有命名空间最外层定义等方面。

C#别名指示符是什么?

通过C#别名指示符我们可以为某个类型起一个别名,主要用于解决两个命名空间内有同名类型的冲突或避免使用冗余的命名空间,C#别名指示符在所有命名空间最外层定义,作用域为整个单元文件。如果定义在某个命名空间内,那么它只在直接隶属的命名空间内起作用。

示例:

  1. Class1.cs:   
  2. using System;  
  3. using System.Collections.Generic;  
  4. using System.Text;  
  5.    
  6. namespace com.nblogs.reonlyrun.CSharp25QExample.Example19.Lib01  
  7. {  
  8. class Class1  
  9. {  
  10. public override string ToString()  
  11. {  
  12. return "com.nblogs.reonlyrun.CSharp25QExample.Example19.Lib01's Class1";  
  13. }  
  14. }  
  15. }  
  16. Class2.cs:   
  17. using System;  
  18. using System.Collections.Generic;  
  19. using System.Text;  
  20.    
  21. namespace com.nblogs.reonlyrun.CSharp25QExample.Example19.Lib02  
  22. {  
  23. class Class1  
  24. {  
  25. public override string ToString()  
  26. {  
  27. return "com.nblogs.reonlyrun.CSharp25QExample.Example19.Lib02's Class1";  
  28. }  
  29. }  
  30. }  
  31. 主单元(Program.cs):  
  32. using System;  
  33. using System.Collections.Generic;  
  34. using System.Text;  
  35.    
  36. //使用别名指示符解决同名类型的冲突  
  37. //在所有命名空间最外层定义,作用域为整个单元文件  
  38. using Lib01Class1 = com.nblogs.reonlyrun.CSharp25QExample.Example19.Lib01.Class1;  
  39. using Lib02Class2 = com.nblogs.reonlyrun.CSharp25QExample.Example19.Lib02.Class1;  
  40.    
  41. namespace Example19  
  42. {  
  43. namespace Test1  
  44. {  
  45. //Test1Class1在Test1命名空间内定义,作用域仅在Test1之内  
  46. using Test1Class1 = com.nblogs.reonlyrun.CSharp25QExample.Example19.Lib01.Class1;  
  47.    
  48. class Class1  
  49. {  
  50. //Lib01Class1和Lib02Class2在这可以正常使用  
  51. Lib01Class1 tmpObj1 = new Lib01Class1();  
  52. Lib02Class2 tmpObj2 = new Lib02Class2();  
  53. //TestClass1在这可以正常使用  
  54. Test1Class1 tmpObj3 = new Test1Class1();  
  55. }  
  56. }  
  57. namespace Test2  
  58. {  
  59. using Test1Class2 = com.nblogs.reonlyrun.CSharp25QExample.Example19.Lib01.Class1;  
  60.    
  61. class Program  
  62. {  
  63. static void Main(string[] args)  
  64. {  
  65. //Lib01Class1和Lib02Class2在这可以正常使用  
  66. Lib01Class1 tmpObj1 = new Lib01Class1();  
  67. Lib02Class2 tmpObj2 = new Lib02Class2();  
  68.    
  69. //注意这里,TestClass1在这不可以正常使用。  
  70. //因为,在Test2命名空间内不能使用Test1命名空间定义的别名  
  71. //Test1Class1 tmpObj3 = new Test1Class1();  
  72.  
  73. //TestClass2在这可以正常使用  
  74. Test1Class2 tmpObj3 = new Test1Class2();  
  75.    
  76. Console.WriteLine(tmpObj1);  
  77. Console.WriteLine(tmpObj2);  
  78. Console.WriteLine(tmpObj3);  
  79.    
  80. Console.ReadLine();  
  81. }  
  82. }  
  83. }  


本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
C#基础概念二十五问
abstract 是什么意思?
override 和overload 的区别?
C# const和static readonly区别浅谈
import函数:类库导入
Thinkphp中import方法用法
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服