基于Microsoft Learn的C#学习(入门-简介)

参考文档:C# 教程 - 概述 | Microsoft Learnhttps://learn.microsoft.com/zh-cn/dotnet/csharp/tour-of-csharp/

C#语言介绍

(1)C#是面向对象面向组件的语言,需要定义类型及其行为。

(2)垃圾回收

(3)可为null的类型

(4)异常处理

(5)Lambda表达式

(6)语言集成查询(LINQ)

(7)异步操作

(8)有统一类型系统

(9)支持用户自定义的引用类型和值类型

(10)C#允许动态分配轻型结构的对象和内嵌存储

(11)C#支持泛型方法和类型

(12)C#可提供迭代器

.NET体系结构

Hello world

类型和变量

类型定义C#中的任何数据的结构和行为。

类型的声明可以包含其成员、基类型、它实现的接口和该类型允许的操作。

变量是用于引用特定类型的实例的标签。

C#有两种类型:值类型和引用类型。

值类型的变量直接包含他们的数据。

引用类型的变量存储对数据(称为“对象”)的引用。

对于引用类型,两个变量可以引用同一个对象;对于变量执行的运算可能会影响另一个变量引用的对象。

借助值类型,每个变量都有自己的数据副本;因此,对一个变量执行的运算不会影响另一个变量(ref和out参数变量除外)。

标识符是变量名称。标识符是不包含任何空格的unicode字符序列。

如果标识符的前缀为@,则该标识符可以是C#保留字。在与其他语言交互时,使用保留字作为标识符很有用。

C#的值类型进一步分为:简单类型、枚举类型、结构类型、可以为null的值类型和元组值类型。

C#引用类型又细分为类类型、接口类型、数组类型和委托类型。

C#类型系统

值类型

        简单类型

                有符号整形:sbyte short int long

                无符号整形:byte ushort uint ulong

                Unicode字符:char,表示UTF-16代码单元

                 IEEE二进制浮点:float double

                高精度十进制浮点数:decimal

                布尔值:bool,表示布尔值(trur或false)

        枚举类型

                enum E {...}

        结构类型

                struct S {...}

        可以为null的值类型

        元组值类型

                (T1,T2,...)

引用类型

        类类型

                其他所有类型的最终基类:object

                Unicode字符串:string,表示UTF-16代码单元序列

                class C {...}

        接口类型

                interface I {...}

        数组类型

                一维、多维、交错。

        委托类型

                delegate int D(...)

C#程序使用类型声明创建新类型。

类型声明指定新类型的名称和成员。

用户可以定义一下六种C#类型:类类型、结构类型、接口类型、枚举类型、委托类型和元组值类型。

还可以声明record类型(record struct或record class)。

记录类型具有编译器合成成员。

记录主要用于存储值,关联行为最少。

        class类型定义包含数据成员(字段)和函数成员(方法、属性及其他)的数据结构。

        类类型支持单一继承和多形性,即派生类可以扩展和专门针对基类的机制。

        struct类型定义包含数据成员和函数成员的结构,这一点与类类型相似。

        不过,与类不同的是,结构是值类型,通常不需要堆分配。

        结构类型不支持用户指定的继承,并且所有结构类型均隐式继承自类型object。

        interface类型将协定定义为一组已命名的公共成员。

        实现interface的class或struct必须提供接口成员的实现代码。

        interface可以继承自多个基接口,class和struct可以实现多个接口。

        delegate类型表示引用包含特定参数列表和返回类型的方法。

        通过委托,可以将方法视为可分配给变量并可作为参数传递的实体。

        委托类同于函数式语言提供的函数类型。

        它们还类似于其他一些语言中存在的“函数指针”概念。

        与函数指针不同,委托是面向对象且类型安全的

class、struct、interface和delegate类型全部都支持泛型,因此可以使用其他类型对它们进行参数化。 

C#支持任意类型的一维和多维数组

与上述类型不同,数组类型无需先声明即可使用。

相反,数组类型是通过在类型名称后面添加方括号而造成的。

可以为null的类型不需要单独定义。

对于所有不可以为null的类型T,都有对应的可以为null的类型T?,后者可以包含附加值null。

C#采用统一的类型系统,因此任意类型的值都可视为object。

每种C#类型都直接或间接地派生自object类类型,而object是所有类型的最终基类。

只需将值视为类型object,即可将引用类型的值视为对象。

通过执行装箱和取消装箱操作,可以将值类型的值视为对象。

将值类型的值分配给object对象引用时,会分配一个“箱”来保存此值。

该箱是引用类型的实例。此值会被复制到该箱。

C#的统一类型实际上意味着“按需”将值类型视为object引用。

鉴于这种统一性,使用类型object的常规用途库可以与派生自object的所有类型结合使用,包括引用类型和值类型。

C#有多种变量,其中包括字段、数组元素、局部变量和参数。

变量表示存储位置。

每个变量都具有一种类型,用于确定可以在变量中存储哪些值。

程序结构

C#中的关键组织结构概念包括程序、命名空间、类型、成员和程序集。

程序声明类型,而类型则包含成员,并被整理到命名空间中。

类型示例包括类、结构和接口。

成员示例包括字段、方法、属性和事件。

编译完的C#程序实际上会打包到程序集中。

程序集的文件扩展名通常.exe或.dll,具体视其分别实现的是应用程序还是库而定。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值