C#基础概念学习笔记

开发 后端
本文介绍C#基础概念学习笔记,包括extern 修饰符用于声明由程序集外部实现的成员函数、abstract 修饰符可以用于类、方法、属性、事件和索引指示器和internal 修饰符可以用于类型或成员。

C#基础概念之extern 是什么意思?

extern 修饰符用于声明由程序集外部实现的成员函数,经常用于系统API函数的调用(通过 DllImport )。注意,和DllImport一起使用时要加上 static 修饰符,也可以用于对于同一程序集不同版本组件的调用(用 extern 声明别名),不能与 abstract 修饰符同时使用。

示例:

  1. using System;  
  2. using System.Collections.Generic;  
  3. using System.Text;  
  4. using System.Runtime.InteropServices;  
  5.  
  6. namespace Example03 {   
  7. class Program {   
  8. //注意DllImport是一个Attribute Property,
    在System.Runtime.InteropServices命名空间中定义  
  9. //extern与DllImport一起使用时必须再加上一个static修饰符[DllImport("User32.dll")]   
  10. public static extern int MessageBox
    (int Handle, string Message, string Caption, int Type);  
  11.  
  12. static int Main(){   
  13. string myString;  
  14. Console.Write("Enter your message: ");  
  15. myString = Console.ReadLine();  
  16. return MessageBox(0, myString, "My Message Box", 0);  

C#基础概念之abstract 是什么意思?

abstract 修饰符可以用于类、方法、属性、事件和索引指示器(indexer),表示其为抽象成员,abstract 不可以和 static 、virtual 、override 一起使用,声明为 abstract 成员可以不包括实现代码,但只有类中还有未实现的抽象成员,该类就不可以被实例化,通常用于强制继承类必须实现某一成员

示例:

  1. using System;  
  2. using System.Collections.Generic;  
  3. using System.Text;  
  4.  
  5. namespace Example04 {   
  6.  
  7. public abstract class BaseClass {   
  8. //抽象属性,同时具有get和set访问器表示继承类必须将该属性实现为可读写  
  9. public abstract String Attribute {   
  10. get;  
  11. set;  
  12. }  
  13.  
  14. //抽象方法,传入一个字符串参数无返回值  
  15. public abstract void Function(String value);  
  16.  
  17. //抽象事件,类型为系统预定义的代理(delegate):  
  18. EventHandler public abstract event EventHandler Event;  
  19.  
  20. //抽象索引指示器,只具有get访问器表示继承类必须将该索引指示器实现为只读  
  21. public abstract Char this[int Index] {   
  22. get;  
  23. }   
  24.  
  25. public class DeriveClass : BaseClass {   
  26. private String attribute;  
  27.  
  28. public override String Attribute {   
  29. get {   
  30. return attribute;  
  31. }   
  32. set {   
  33. attribute = value;  
  34. }   
  35. public override void Function(String value){   
  36. attribute = value;  
  37. if (Event != null){   
  38. Event(this, new EventArgs());  
  39. }   
  40. public override event EventHandler Event;  
  41. public override Char this[int Index] {   
  42. get {   
  43. return attribute[Index];  
  44. }   
  45.  
  46. class Program { static void OnFunction(object sender, EventArgs e){   
  47. for (int i = 0;   
  48. < ((DeriveClass)sender)。Attribute.Length;   
  49. i++){ Console.WriteLine(((DeriveClass)sender)[i]);  
  50. }   
  51. static void Main(string[] args){   
  52. DeriveClass tmpObj = new DeriveClass();  
  53. tmpObj.Attribute = "1234567";Console.WriteLine(tmpObj.Attribute);  
  54. //将静态函数OnFunction与tmpObj对象的Event事件进行关联  
  55. tmpObj.Event += new EventHandler(OnFunction);  
  56. tmpObj.Function("7654321");  
  57. Console.ReadLine();  

C#基础概念之internal 修饰符起什么作用?

internal 修饰符可以用于类型或成员,使用该修饰符声明的类型或成员只能在同一程集内访问,接口的成员不能使用 internal 修饰符

示例:

  1. using System;  
  2. using System.Collections.Generic;  
  3. using System.Text;  
  4.  
  5. namespace Example05Lib {   
  6. public class Class1 {   
  7. internal String strInternal = null;  
  8. public String strPublic;  

【编辑推荐】

  1. C#反射方法学习总结
  2. 浅谈C#测量cpu性能
  3. C#远程计算机的一些理论知识
  4. 浅析C# Static修饰
  5. C#转换农历的简单方法
责任编辑:佚名 来源: 中国IT实验室
相关推荐

2009-08-13 10:52:03

C#基础概念

2009-08-13 18:02:50

C#基础概念

2009-09-17 17:44:51

C#动态数组

2011-04-25 09:22:44

C#事件

2011-04-22 09:14:26

C#委托

2011-04-26 08:56:31

C#

2011-06-08 14:22:51

延迟加载

2024-03-19 08:54:20

Rust语言内存管理应用程序开发

2009-08-13 18:21:52

C#学习笔记

2009-08-12 09:28:36

C# WiteOne

2009-08-20 15:02:57

C# If语句

2009-08-12 15:50:40

C# ListBox

2009-08-26 10:48:44

C# SQL命令

2009-08-31 15:27:33

C# TreeView

2009-08-24 15:46:46

C# SmartPho

2009-08-21 17:53:28

C#查询结果

2009-08-12 10:46:54

C#命名空间

2009-08-24 14:30:49

C# WMI封装

2009-08-25 15:26:03

C#调用ImOK

2009-08-19 15:59:24

C#参数类型
点赞
收藏

51CTO技术栈公众号