
C#
文章平均质量分 83
智慧浩海
源码资源仅供个人研究参考学习,不得将内容资源用于商业或者非法用途,否则,一切后果请用户自负,暂不提供安装服务和技术支持。文档资料部分来源于合法的互联网渠道收集和整理,部分自己学习积累成果,供大家学习参考与交流。收取的费用仅用于收集和整理资料耗费时间的酬劳。 本人尊重原创作者或出版方,资料版权归原作者或出版方所有,本人不对所涉及的版权问题或内容负法律责任。如有侵权,请通知本人删除。
展开
-
C# 多线程
被定义为程序的执行路径。每个线程都定义了一个独特的控制流。如果您的应用程序涉及到复杂的和耗时的操作,那么设置不同的线程执行路径往往是有益的,每个线程执行特定的工作。线程是。一个使用线程的常见实例是现代操作系统中并行编程的实现。使用线程节省了 CPU 周期的浪费,同时提高了应用程序的效率。到目前为止我们编写的程序是一个单线程作为应用程序的运行实例的单一的过程运行的。但是,这样子应用程序同时只能执行一个任务。为了同时执行多个任务,它可以被划分为更小的线程。原创 2023-03-27 08:38:38 · 111 阅读 · 0 评论 -
C# 不安全代码
当一个代码块使用修饰符标记时,C# 允许在函数中使用指针变量。或非托管代码是指使用了变量的代码块。原创 2023-03-25 08:51:25 · 119 阅读 · 0 评论 -
C# 匿名方法
我们已经提到过,委托是用于引用与其具有相同标签的方法。换句话说,您可以使用委托对象调用可由委托引用的方法。提供了一种传递代码块作为委托参数的技术。匿名方法是没有名称只有主体的方法。在匿名方法中您不需要指定返回类型,它是从方法主体内的 return 语句推断的。原创 2023-03-25 08:49:15 · 162 阅读 · 0 评论 -
C# 泛型(Generic)
允许您延迟编写类或方法中的编程元素的数据类型的规范,直到实际在程序中使用它的时候。换句话说,泛型允许您编写一个可以与任何数据类型一起工作的类或方法。您可以通过数据类型的替代参数编写类或方法的规范。当编译器遇到类的构造函数或方法的函数调用时,它会生成代码来处理指定的数据类型。原创 2023-03-25 08:48:41 · 115 阅读 · 0 评论 -
C# 集合(Collection)
集合(Collection)类是专门用于数据存储和检索的类。这些类提供了对栈(stack)、队列(queue)、列表(list)和哈希表(hash table)的支持。大多数集合类实现了相同的接口。集合(Collection)类服务于不同的目的,如为元素动态分配内存,基于索引访问列表项等等。这些类创建 Object 类的对象的集合。在 C# 中,Object 类是所有数据类型的基类。原创 2023-03-25 08:45:42 · 141 阅读 · 0 评论 -
C# 集合(Collection)
集合(Collection)类是专门用于数据存储和检索的类。这些类提供了对栈(stack)、队列(queue)、列表(list)和哈希表(hash table)的支持。大多数集合类实现了相同的接口。集合(Collection)类服务于不同的目的,如为元素动态分配内存,基于索引访问列表项等等。这些类创建 Object 类的对象的集合。在 C# 中,Object 类是所有数据类型的基类。原创 2023-03-24 08:34:09 · 241 阅读 · 0 评论 -
C# 事件(Event)
基本上说是一个用户操作,如按键、点击、鼠标移动等等,或者是一些提示信息,如系统生成的通知。应用程序需要在事件发生时响应事件。例如,中断。C# 中使用事件机制实现线程间的通信。原创 2023-03-24 08:33:34 · 318 阅读 · 0 评论 -
C# 委托(Delegate)
C# 中的委托(Delegate)类似于 C 或 C++ 中函数的指针。是存有对某个方法的引用的一种引用类型变量。引用可在运行时被改变。委托(Delegate)特别用于实现事件和回调方法。所有的委托(Delegate)都派生自类。原创 2023-03-24 08:30:32 · 144 阅读 · 0 评论 -
C# 索引器(Indexer)
允许一个对象可以像数组一样使用下标的方式来访问。当您为类定义一个索引器时,该类的行为就会像一个一样。您可以使用数组访问运算符 [ ] 来访问该类的的成员。原创 2023-03-24 08:31:49 · 193 阅读 · 0 评论 -
C# 索引器(Indexer)
允许一个对象可以像数组一样使用下标的方式来访问。当您为类定义一个索引器时,该类的行为就会像一个一样。您可以使用数组访问运算符 [ ] 来访问该类的的成员。原创 2023-03-23 08:40:40 · 338 阅读 · 0 评论 -
C# 属性(Property)
抽象类可拥有抽象属性,这些属性应在派生类中被实现。原创 2023-03-23 08:42:06 · 211 阅读 · 0 评论 -
C# 反射(Reflection)
反射指程序可以访问、检测和修改它本身状态或行为的一种能力。程序集包含模块,而模块包含类型,类型又包含成员。反射则提供了封装程序集、模块和类型的对象。您可以使用反射动态地创建类型的实例,将类型绑定到现有对象,或从现有对象中获取类型。然后,可以调用类型的方法或访问其字段和属性。原创 2023-03-23 08:39:08 · 174 阅读 · 0 评论 -
C# 特性(Attribute)
Obsolete.Net 框架允许创建自定义特性,用于存储声明性的信息,且可在运行时被检索。该信息根据设计标准和应用程序需要,可与任何目标元素相关。声明自定义特性构建自定义特性在目标程序元素上应用自定义特性通过反射访问特性最后一个步骤包含编写一个简单的程序来读取元数据以便查找各种符号。元数据是用于描述其他数据的数据和信息。该程序应使用反射来在运行时访问特性。我们将在下一章详细讨论这点。一个新的自定义特性应派生自类。例如:// 一个自定义特性 BugFix 被赋给类及其成员。原创 2023-03-23 08:40:30 · 173 阅读 · 0 评论 -
C# 文件的输入与输出
一个是一个存储在磁盘中带有指定名称和目录路径的数据集合。当打开文件进行读写时,它变成一个。从根本上说,流是通过通信路径传递的字节序列。和。用于从文件读取数据(读操作),用于向文件写入数据(写操作)。原创 2023-03-22 08:42:11 · 368 阅读 · 0 评论 -
C# 异常处理
您也可以定义自己的异常。用户自定义的异常类是派生自类。原创 2023-03-22 08:41:28 · 208 阅读 · 0 评论 -
C# 预处理器指令
预处理器指令指导编译器在实际编译开始之前对信息进行预处理。所有的预处理器指令都是以 # 开始。且在一行上,只有空白字符可以出现在预处理器指令之前。预处理器指令不是语句,所以它们不以分号(;)结束。C# 编译器没有一个单独的预处理器,但是,指令被处理时就像是有一个单独的预处理器一样。在 C# 中,预处理器指令用于在条件编译中起作用。与 C 和 C++ 不同的是,它们不是用来创建宏。一个预处理器指令必须是该行上的唯一指令。原创 2023-03-22 08:42:02 · 211 阅读 · 0 评论 -
C# 正则表达式
下面列出了用于定义正则表达式的各种类别的字符、运算符和结构。字符转义字符类定位点分组构造限定符反向引用构造备用构造替换杂项构造。原创 2023-03-22 08:40:32 · 386 阅读 · 0 评论 -
C# 预处理器指令
预处理器指令指导编译器在实际编译开始之前对信息进行预处理。所有的预处理器指令都是以 # 开始。且在一行上,只有空白字符可以出现在预处理器指令之前。预处理器指令不是语句,所以它们不以分号(;)结束。C# 编译器没有一个单独的预处理器,但是,指令被处理时就像是有一个单独的预处理器一样。在 C# 中,预处理器指令用于在条件编译中起作用。与 C 和 C++ 不同的是,它们不是用来创建宏。一个预处理器指令必须是该行上的唯一指令。原创 2023-03-21 08:40:02 · 151 阅读 · 0 评论 -
C# 命名空间(Namespace)
命名空间的设计目的是提供一种让一组名称与其他名称分隔开的方式。在一个命名空间中声明的类的名称与另一个命名空间中声明的相同的类的名称不冲突。我们举一个计算机系统中的例子,一个文件夹(目录)中可以包含多个文件夹,每个文件夹中不能有相同的文件名,但不同文件夹中的文件可以重名。命名空间的定义是以关键字 namespace 开始,后跟命名空间的名称,如下所示:namespace namespace_name{ // 代码声明}为了调用支持命名空间版本的函数或变量,会把命名空间的名称置于前面,如下所示:下面的原创 2023-03-21 08:41:26 · 415 阅读 · 0 评论 -
C# 接口(Interface)
接口使用interface关键字声明,它与类的声明类似。接口声明默认是 public 的。下面是一个接口声明的实例:以上代码定义了接口 IMyInterface。通常接口命令以 I 字母开头,这个接口只有一个方法 MethodToImplement(),没有参数和返回值,当然我们可以按照需求设置参数和返回值。值得注意的是,该方法并没有具体的实现。原创 2023-03-21 08:38:19 · 185 阅读 · 0 评论 -
C# 运算符重载
您可以重定义或重载 C# 中内置的运算符。因此,程序员也可以使用用户自定义类型的运算符。重载运算符是具有特殊名称的函数,是通过关键字后跟运算符的符号来定义的。与其他函数一样,重载运算符有返回类型和参数列表。例如,请看下面的函数:return box;上面的函数为用户自定义的类 Box 实现了加法运算符(+)。它把两个 Box 对象的属性相加,并返回相加后的 Box 对象。原创 2023-03-20 08:44:21 · 130 阅读 · 0 评论 -
C# 多态性
创建抽象类,用于提供接口的部分类的实现。当一个派生类继承自该抽象类时,实现即完成。原创 2023-03-20 08:43:19 · 207 阅读 · 0 评论 -
C# 继承
继承是面向对象程序设计中最重要的概念之一。继承允许我们根据一个类来定义另一个类,这使得创建和维护应用程序变得更容易。同时也有利于重用代码和节省开发时间。当创建一个类时,程序员不需要完全重新编写新的数据成员和成员函数,只需要设计一个新的类,继承了已有的类的成员即可。这个已有的类被称为的,这个新的类被称为。继承的思想实现了关系。例如,哺乳动物动物,狗哺乳动物,因此狗动物。原创 2023-03-20 08:42:18 · 253 阅读 · 0 评论 -
C# 类(Class)
类的定义是以关键字class开始,后跟类的名称。类的主体,包含在一对花括号内。下面是类定义的一般形式:......访问标识符 指定了对类及其成员的访问规则。如果没有指定,则使用默认的访问标识符。类的默认访问标识符是internal,成员的默认访问标识符是private。数据类型 指定了变量的类型,返回类型 指定了返回的方法返回的数据类型。原创 2023-03-20 08:38:08 · 187 阅读 · 0 评论 -
C# 枚举(Enum)
枚举是一组命名整型常量。枚举类型是使用关键字声明的。C# 枚举是值类型。换句话说,枚举包含自己的值,且不能继承或传递继承。原创 2023-03-18 10:19:17 · 331 阅读 · 0 评论 -
C# 结构体(Struct)
为了定义一个结构体,您必须使用 struct 语句。struct 语句为程序定义了一个带有多个成员的新的数据类型。原创 2023-03-18 10:18:39 · 266 阅读 · 0 评论 -
C# 字符串(String)
在 C# 中,您可以使用字符数组来表示字符串,但是,更常见的做法是使用关键字来声明一个字符串变量。string 关键字是类的别名。原创 2023-03-18 10:15:57 · 1826 阅读 · 0 评论 -
C# 数组(Array)
数组是一个存储相同类型元素的固定大小的顺序集合。数组是用来存储数据的集合,通常认为数组是一个同一类型变量的集合。声明数组变量并不是声明 number0、number1、...、number99 一个个单独的变量,而是声明一个就像 numbers 这样的变量,然后使用 numbers[0]、numbers[1]、...、numbers[99] 来表示一个个单独的变量。数组中某个指定的元素是通过索引来访问的。所有的数组都是由连续的内存位置组成的。最低的地址对应第一个元素,最高的地址对应最后一个元素。原创 2023-03-18 10:14:44 · 326 阅读 · 0 评论 -
C# 可空类型(Nullable)
例如,Nullable< Int32 >,读作"可空的 Int32",可以被赋值为 -2,147,483,648 到 2,147,483,647 之间的任意值,也可以被赋值为 null 值。Null 合并运算符把操作数类型隐式转换为另一个可空(或不可空)的值类型的操作数的类型。Console.WriteLine("显示可空类型的值: {0}, {1}, {2}, {3}",num3 = num1?类型(可空类型),可空类型可以表示其基础值类型正常范围内的值,再加上一个 null 值。原创 2023-03-17 08:36:05 · 553 阅读 · 0 评论 -
C# 方法
当定义一个方法时,从根本上说是在声明它的结构的元素。在 C# 中,定义方法的语法如下::访问修饰符,这个决定了变量或方法对于另一个类的可见性。:返回类型,一个方法可以返回一个值。返回类型是方法返回的值的数据类型。如果方法不返回任何值,则返回类型为void。:方法名称,是一个唯一的标识符,且是大小写敏感的。它不能与类中声明的其他标识符相同。:参数列表,使用圆括号括起来,该参数是用来传递和接收方法的数据。参数列表是指方法的参数类型、顺序和数量。参数是可选的,也就是说,一个方法可能不包含参数。原创 2023-03-17 08:33:24 · 149 阅读 · 0 评论 -
C# 封装
被定义为"把一个或多个项目封闭在一个物理的或者逻辑的包中"。在面向对象程序设计方法论中,封装是为了防止对实现细节的访问。抽象和封装是面向对象程序设计的相关特性。抽象允许相关信息可视化,封装则使开发者实现所需级别的抽象。C# 封装根据具体的需要,设置使用者的访问权限,并通过来实现。一个定义了一个类成员的范围和可见性。原创 2023-03-17 08:32:11 · 543 阅读 · 0 评论 -
C# 循环
有的时候,可能需要多次执行同一块代码。一般情况下,语句是顺序执行的:函数中的第一个语句先执行,接着是第二个语句,依此类推。编程语言提供了允许更为复杂的执行路径的多种控制结构。原创 2023-03-17 08:33:18 · 140 阅读 · 0 评论 -
C# 判断
判断结构要求程序员指定一个或多个要评估或测试的条件,以及条件为真时要执行的语句(必需的)和条件为假时要执行的语句(可选的)。原创 2023-03-16 08:49:33 · 189 阅读 · 0 评论 -
C# 运算符
运算符是一种告诉编译器执行特定的数学或逻辑操作的符号。本教程将逐一讲解算术运算符、关系运算符、逻辑运算符、位运算符、赋值运算符及其他运算符。原创 2023-03-16 08:47:02 · 621 阅读 · 0 评论 -
C# 常量
常量是使用const关键字来定义的。原创 2023-03-16 08:45:57 · 127 阅读 · 0 评论 -
C# 变量
C# 中变量定义的语法:在这里,data_type 必须是一个有效的 C# 数据类型,可以是 char、int、float、double 或其他用户自定义的数据类型。variable_list 可以由一个或多个用逗号分隔的标识符名称组成。一些有效的变量定义如下所示:char c, ch;double d;原创 2023-03-16 08:45:07 · 116 阅读 · 0 评论 -
C# 数据类型
所以对象(Object)类型可以被分配任何其他类型(值类型、引用类型、预定义类型或用户自定义类型)的值。如果内存位置的数据是由一个变量改变的,其他变量会自动反映这种值的变化。动态类型与对象类型相似,但是对象类型变量的类型检查是在编译时发生的,而动态类型变量的类型检查是在运行时发生的。C# 中的指针与 C 或 C++ 中的指针有相同的功能。您可以存储任何类型的值在动态数据类型变量中。这些变量的类型检查是在运行时发生的。下面举例获取任何机器上。引用类型不包含存储在变量中的实际数据,但它们包含对变量的引用。原创 2023-03-15 08:50:40 · 188 阅读 · 0 评论 -
C# 基本语法
C# 是一种面向对象的编程语言。在面向对象的程序设计方法中,程序由各种相互交互的对象组成。相同种类的对象通常具有相同的类型,或者说,是在相同的 class 中。例如,以 Rectangle(矩形)对象为例。它具有 length 和 width 属性。根据设计,它可能需要接受这些属性值、计算面积和显示细节。原创 2023-03-15 08:47:51 · 130 阅读 · 0 评论 -
C# 程序结构
在我们学习 C# 编程语言的基础构件块之前,让我们先看一下 C# 的最小的程序结构,以便作为接下来章节的参考。原创 2023-03-15 08:47:05 · 150 阅读 · 0 评论 -
C# 环境
在这一章中,我们将讨论创建 C# 编程所需的工具。我们已经提到 C# 是 .Net 框架的一部分,且用于编写 .Net 应用程序。因此,在讨论运行 C# 程序的可用工具之前,让我们先了解一下 C# 与 .Net 框架之间的关系。原创 2023-03-14 08:40:49 · 307 阅读 · 0 评论