
C# 基础
文章平均质量分 94
C# 基础学习总结
呆呆小雅
一名秃头程序猿小姐姐
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
C#关键字volatile
在这个例子中,count字段被声明为volatile。在这里,hasData变量被声明为volatile,确保了生产者线程对hasData的修改能够被消费者线程及时看到,并且消费者线程对hasData的修改也能被生产者线程及时看到,从而保证了生产者 - 消费者模式的正确运行。例如,有两个线程,一个线程(线程 A)在不断地更新一个共享变量的值,另一个线程(线程 B)在读取这个共享变量的值。因为它要求对变量的每次访问都直接从主内存中进行,而不是从线程的工作内存(缓存)中进行,这会增加内存访问的开销。原创 2024-12-23 09:59:45 · 1802 阅读 · 41 评论 -
C# 数组
在 C# 编程中,数组是一种非常重要的数据结构,它允许我们存储和操作一组相同类型的元素。数组可以是一维的、多维的或不规则的,并且可以包含任何类型的数据,包括基本数据类型、引用类型和自定义类型。本教程将介绍 C# 数组的基本概念、声明、初始化、访问和操作方法。数组是一种存储相同类型元素的集合。它可以是一维的(线性列表)、多维的(表格或矩阵)或不规则的(数组的数组)。数组中的每个元素都可以通过一个索引来访问,索引通常是一个整数,从 0 开始。C# 数组是一种强大的数据结构,可以用于存储和操作一组相同类型的元素。原创 2024-12-10 09:38:40 · 1474 阅读 · 5 评论 -
C# 多态性
在 C# 编程中,多态性是一个非常重要的概念。多态性允许我们使用单个接口来操作多种不同类型的对象,从而提高代码的灵活性、可维护性和可扩展性。C# 通过多种方式实现多态性,包括方法重写、方法重载和接口实现等。多态性(Polymorphism)一词来源于希腊语,意为 “多种形态”。在面向对象编程中,多态性是指同一个操作作用于不同的对象可以有不同的表现形式。例如,一个名为 “draw” 的方法,在不同的图形对象(如圆形、矩形、三角形等)中可能有不同的实现方式,但都可以通过相同的接口来调用。原创 2024-12-10 09:27:52 · 2241 阅读 · 41 评论 -
C# 中 Interface(接口)和 virtual(虚方法)
在 C# 编程中,接口(Interface)和虚方法(virtual)是实现多态性和代码可扩展性的重要概念。它们允许我们以一种灵活的方式定义和实现行为,使得代码更加易于维护和扩展。接口是一种抽象类型,它定义了一组方法签名,但没有具体的实现。接口可以被类和结构实现,实现接口的类或结构必须提供接口中定义的所有方法的具体实现。在这个例子中,IAnimal 接口定义了一个名为 MakeSound 的方法。虚方法是在基类中使用 virtual 关键字声明的方法。虚方法可以在派生类中被重写,以实现不同的行为。原创 2024-12-09 09:58:52 · 1324 阅读 · 5 评论 -
C# 字符串(String)
在 C# 中,虽然可以使用字符数组来表示字符串,但更为常见的做法是运用 string 关键字声明字符串变量。实际上,string 关键字是 System.String 类的别名,这意味着我们在使用 string 进行操作时,本质上就是在操作 System.String 类的实例。原创 2024-12-05 09:39:38 · 3387 阅读 · 29 评论 -
C# 动态类型 Dynamic
在 C# 中,dynamic 关键字是一种重要的类型,允许开发者绕过编译时的类型检查,以便在运行时动态决定类型。这种特性提供了更大的灵活性,尤其在处理动态数据、COM 组件、动态语言接口(DLR)等场合非常有用。dynamic 类型允许变量在运行时被赋予任何数据类型。与 object 类型不同,dynamic 类型的变量在编译时不进行类型检查,而是在运行时解析,从而提供了更大的灵活性。使用 dynamic,你可以调用对象的方法和属性,而不需要在编译时确定它们是否存在。原创 2024-12-04 17:47:07 · 3918 阅读 · 27 评论 -
C# Decimal
decimal 是 C# 中一种用于表示高精度十进制数的关键字。它主要用于金融和其他需要精确计算的场景,因其能够减少因浮点数运算产生的误差。decimal 类型能够表示的数值范围较大,并且保持精度,适合需要精确表示的场合。decimal 是 C# 中一个非常优秀的数值类型,特别适用于需要高精度和准确性的场景,如金融计算。原创 2024-12-04 17:36:19 · 1830 阅读 · 0 评论 -
C# yield 关键字
在 C# 中,yield 关键字是一个非常独特且强大的语言特性,它主要用于迭代器块(Iterator Block)中,能够让开发者以一种简洁高效的方式实现自定义的可迭代类型,轻松地生成并返回一个序列的值,而无需像传统方式那样创建一个完整的集合对象来存储所有要返回的数据。简单来说,yield 关键字帮助我们实现了一种 “按需生成” 数据的机制,特别适用于处理大数据量或者无限序列的情况,避免了一次性占用大量内存空间。原创 2024-11-29 09:47:25 · 1376 阅读 · 1 评论 -
C# 元组
在 C# 中,元组是一种非常实用的数据结构,它提供了一种简单的方式来将多个不同类型的值组合在一起,形成一个单一的实体。可以把它想象成一个轻量级的容器,能够方便地在程序中传递和处理多个相关的数据项,而无需专门去定义一个新的类或者结构体来承载这些数据。例如,在一个方法中可能需要同时返回多个不同类型的数据,比如既要返回一个表示用户 ID(整型)的数据,又要返回用户的姓名(字符串类型)以及用户的注册时间(DateTime 类型),这时使用元组就能很便捷地实现这个需求。原创 2024-11-29 09:22:25 · 2779 阅读 · 31 评论 -
C# 文件IO
流就是通过通信路径传递的字节序列,而在文件操作里,主要存在两个关键的流类型:输入流与输出流。输入流负责从文件中读取数据,也就是执行读操作;输出流则承担着向文件写入数据的任务,即进行写操作。原创 2024-11-28 09:56:25 · 996 阅读 · 2 评论 -
C# 命名空间(Namespace)
命名空间(Namespace)在于提供一种清晰、高效的方式,将一组名称与其他名称进行分隔,确保在不同命名空间里即便声明了相同名称的类,也不会引发冲突,恰似计算机系统里的文件夹架构,同一文件夹中严禁同名文件存在,可不同文件夹下的文件即便重名也相安无事。命名空间的定义遵循一套简洁且规范的语法,以关键字 namespace 作为起始标识,紧随其后的便是所设定的命名空间名称,在这个被划定的 “代码疆域” 内,开发者可以自由地放置各类代码声明,诸如类、接口、结构体等诸多代码元素。原创 2024-11-28 09:25:41 · 5279 阅读 · 24 评论 -
C# 异常处理
异常处理机制为开发者提供了一种有效的方式,能够将程序的控制权从出现问题的部分合理地转移到其他部分,确保程序在遇到意外情况时依然能够保持相对稳定的运行状态,或者至少能够以一种可控的方式终止并给出相应提示。C# 的异常处理建立在四个至关重要的关键词之上,它们分别是 try、catch、finally 和 throw,各自承担着不同且关键的职责,共同构建起了完善的异常处理体系。除了使用系统预定义的异常类来处理常见的异常情况外,开发者还可以根据实际业务需求定义自己的异常。tryelse。原创 2024-11-27 10:10:11 · 2158 阅读 · 1 评论 -
C# 继承
这种基于继承的设计思想,精准地实现了 “属于(IS-A)” 关系,就如同在现实世界里,哺乳动物从属于动物范畴,狗又属于哺乳动物,所以狗自然也属于动物一样,这种逻辑关系在程序代码中通过类的继承得以清晰体现,让程序的结构与现实世界中的对象关系相互呼应,更符合人们的认知习惯,也使得代码更易于理解和维护。在 Main 方法中,创建了 MyClass 的实例 obj 并分别调用了相应的方法,最终会输出对应方法的实现内容,直观展示了接口继承在类实现接口过程中的具体表现和使用方式。原创 2024-11-27 09:51:35 · 1808 阅读 · 1 评论 -
C# 预处理器指令
预处理器指令(Preprocessor Directives)扮演着极为重要的角色,它们如同幕后的指挥家,指导编译器在实际编译开始之前对相关信息进行预处理,从而巧妙地控制编译器如何编译文件,或者具体编译哪些部分,为我们编写更具灵活性、可维护性的代码提供了强大支持。原创 2024-11-27 09:32:53 · 1170 阅读 · 0 评论 -
C# 结构体
结构体(struct)是一种极为重要的值类型(value type)数据结构,能够将各种相关的数据有条理地组织并存储起来,为我们处理和操作数据提供了一种高效且灵活的方式。在 C# 里,我们使用 struct 关键字来创建结构体。struct 语句的作用就像是为程序打造了一个带有多个成员的全新数据类型模板,通过它可以定义出符合特定需求的数据结构。例如,当我们想要跟踪图书馆中书的各种相关信息时,就可以定义一个名为 Books 的结构体来承载这些信息。原创 2024-11-26 09:45:57 · 2731 阅读 · 8 评论 -
C# 可空类型
可空类型(Nullable)是一个极具实用性的特性,它为我们处理那些可能出现未赋值情况的数据提供了便捷且合理的方式。而其中,单问号(?)和双问号(??)这两个符号在可空类型的运用中扮演着关键角色,各自有着独特且重要的功能。原创 2024-11-26 09:30:49 · 1276 阅读 · 0 评论 -
C# 封装
抽象与封装作为面向对象程序设计中紧密相关的两大特性,相辅相成。抽象侧重于让相关信息以一种合适的方式可视化呈现,帮助开发者和使用者从更高层次去理解和把握程序逻辑;而封装则为开发者提供了实现所需抽象级别的有力手段,通过合理控制类成员的访问权限,将类内部的实现细节巧妙地隐藏起来,只对外暴露必要的接口,使得程序在内部逻辑变化时,外部调用部分无需大幅改动,增强了程序的可维护性和可扩展性。原创 2024-11-25 09:56:35 · 1168 阅读 · 7 评论 -
C# 常量
在 C# 编程的世界里,常量是一类特殊的数据元素,它们如同程序中的 “定海神针”,代表着固定的值,在整个程序执行期间都不会发生改变。常量可以涵盖各种基本数据类型,包括整数常量、浮点常量、字符常量、字符串常量以及枚举常量等。这里 明确了常量的数据类型,它必须是一个合法的 C# 基本数据类型或者枚举类型等,比如 int、double、string、自定义的枚举类型等;原创 2024-11-25 09:45:16 · 1053 阅读 · 2 评论 -
C# 变量作用域
变量的作用域机制通过明确界定变量的生命周期,它能够合理地分配内存资源,避免不必要的内存占用与浪费,提高程序的运行效率与稳定性,有效地防止了命名冲突的发生,确保了程序中各个变量名的唯一性与确定性,为编写清晰、可靠、易于维护的 C# 代码奠定了坚实的基础。原创 2024-11-22 10:06:41 · 1352 阅读 · 13 评论 -
C# 变量
在 C# 编程的世界里,变量扮演着至关重要的角色,它本质上就是程序中用于操作存储区的一个名字,是存储和表示数据的标识符。通过变量,程序能够灵活地处理各种数据,实现丰富多样的功能。这里的 data_type 必须是一个合法有效的 C# 数据类型,可以是像 char、int、float、double 这类基本数据类型,当然也涵盖其他开发者自定义的数据类型。而 variable_list 则可以由一个或多个用逗号分隔的标识符名称组成,这些标识符就是我们实际使用的变量名。原创 2024-11-22 09:58:09 · 1241 阅读 · 0 评论 -
C# 类型转换
在 C# 编程的世界里,类型转换是一项极为重要的操作,它能够将一个数据类型的值转变为另一个数据类型的值,以满足不同场景下的数据处理需求。C# 中的类型转换主要可划分为两种不同的方式,即隐式类型转换和显式类型转换(也常被称作强制类型转换),同时还提供了丰富的内置类型转换方法以及支持自定义类型转换操作,下面将详细展开介绍。以下是 System.Convert 类中提供的部分主要类型转换方法及其功能描述:// 转换成功,number 为 123。原创 2024-11-21 17:59:40 · 1879 阅读 · 6 评论 -
C# 数据类型解析
在 C# 编程的世界里,数据类型犹如建筑的基石,奠定了程序运行和数据处理的基础。C# 中的变量主要分为以下几种类型:值类型(Value types)、引用类型(Reference types)以及指针类型(Pointer types),每种类型都有着独特的特性与用途,共同构建起 C# 丰富的数据处理体系。原创 2024-11-21 16:56:02 · 1028 阅读 · 0 评论 -
C# 环境解析
在软件开发的旅程中,一个适宜且功能完备的开发环境对于 C# 编程而言犹如基石之于高楼般重要。本章将深入探讨创建 C# 编程所需的各类工具,以及 C# 与.NET 框架之间千丝万缕的联系。原创 2024-11-21 11:34:28 · 1997 阅读 · 8 评论 -
C# 入门简介
C# 是一种由微软开发的现代编程语言,在软件开发领域具有广泛的影响力和应用场景。原创 2024-11-21 11:18:21 · 2273 阅读 · 6 评论