C#小知识C#中一些易混淆概念总结数据类型存储,方法调用,out和ref参数的使用zhiqiang21

一,.NET平台的重要组成部分都是有哪些

1)FCL(所谓的.NET框架类库)

这些类是微软事先定义好的。

例如当我们新创建一个windows窗体应用程序是,VS会帮我们自动生成下面的代码:

usingSystem;usingSystem.Collections.Generic;usingSystem.Text;这些就是微软事先为程序员定义好的类库。程序员可以直接使用的。

2)CLR(所谓的公共语言运行时)

创建部署.NET程序的必备环境

使用C#,F#,VB等语言都可以来创建.NET应用程序。这时候就需要一个公共语言规范,来把不同的语言解释成.NETFramWork认识的东西。

二,什么是程序集

程序集主要有MSIL组成(所谓的微软中间语言,主要由dll文件组成)

不同编程语言程序被.NETFrameWork编译成程序集(dll文件),当程序需要被执行时,通过CLR中的JIT(及时编译器)编译成本地代码,并将指令发送给CPU执行。

程序集一般有两种:.dll和.exe文件(但是不是所有的dll和exe都叫程序集)

比如:我们在同一个解决方案下,建立多个应用程序或者类库文件。这些程序或者类库编译后就会变成不同的程序集。他们之间是相互独立的。之间如果想要相互访问,需要添加引用。

三,Parse转换和Convert转换的区别

1)Parse转换

①Parse转换只能转换字符串

②自变量是指定的数据类型才可以转换成功

下面的是.NETReflector编译的源代码

2)Convert转换

①可以转换其他类型(如:类)

②与Parse的区别就是,转换前会对被转换的对象进行判断,如果对象为null则会转换失败

下面是实例源代码:

classProgram{staticvoidMain(string[]args){stringa=Console.ReadLine();//Parse只可以转换字符串intb=Int32.Parse(a);//Convert可以转换类等对象ParseNumberparNum=newParseNumber();//这种写法编译器会报错//intb=Int32.Parse(parNum);intc=Convert.ToInt32(parNum);Console.WriteLine(b);Console.WriteLine(b.GetType());Console.ReadKey();}}classParseNumber{privateintnunm;publicintNum{get;set;}}

四,数据类型的存储位置

1)存储在栈中的数据类型

所有数值类型,char,bool,枚举,结构体

2)存储在堆中

string,数组,类

下面以数组来简单说一下这个问题:

①首先程序会在栈中开辟一段名为arr的int[]类型的空间

②然后在堆中开辟一个int[]对象,再该对象中会有4块连续的内存空间

③堆中的对象返回类型为地址,即newint[4]表达式返回的是地址

示意图如下:

五,C#方法调用

1)在C#中我们可以给参数传递默认值,所以当我们调用这个方法的时候,可以不给这个参数传递值

下面的写法编译器会报错

3)方法的可变参数

①可变参数被Params

②Params只能用来修饰一维数组

4)方法的out和ref参数

①out参数侧重于输出,必须在方法内对其赋值

正确的使用方法

六,属性易混淆点辨别

①属性本身不存值,值是存在这个属性所封装的字段里面

classStudy{privateintnID;//属性的值存储在封装的字段里面publicintNID{get{returnnID;}//这里我们给属性赋值set{nID=value;}}}通过访问属性字段获取字段的值

Studystu=newStudy();//通过访问属性字段获取字段的值intnID=stu.NID;②属性的返回值类型和字段的值类型没有关系

//属性的值类型为boolprivateboolgender;//字段的返回类型为stringpublicstringGender{get{returngender==true"男":"女";}set{gender=value=="男"true:false;}}属性的返回值类型决定了get返回值的类型和set参数的类型

//属性的值类型为boolprivateboolgender;//字段的返回类型为stringpublicstringGender{//get的返回值类型为boolget{returngender==true"男":"女";}//set参数类型为boolset{gender=value=="男"true:false;}}③自动属性到底是怎么回事?

看如下的代码:

privatestringstrName;//自动属性封装strNamepublicstringStrName{get;set;}这就是所谓的自动属性封装字段。在非自动属性中,程序默认的会有value值来给字段赋值,但是在自动属性中是怎么赋值的呢?

我们使用.NETReflector反编译来看源代码:

这是我们封转的属性代码:

反编译set函数源代码:

我们可以看到.NET会默认为我们的程序生成一个成员变量k__BackingField

get函数的源代码:

返回的也是该成员变量;

那么什么时候可以使用自动属性呢?

如果对一个字段取值和赋值的时候没有任何逻辑验证并且可读可写的时候,就可以使用自动属性。

①首先给大家说明一个问题就是,文件名和类名必须是一样的么(就是我们在创建类的时候要命明,这个时候会默认的生成一样的类名称)?

如图所示

这个是必须的么?

我们尝试修改类名称为ChildName,然后访问类

可以看到我们要访问类,需要通过类名称访问而与文件名没有关系。

②类表达式的执行顺序和其意义

Studystu=newStudy();编译器执行代码的时候,

首先会先在栈中开辟一块类型为Study的内存空间放置变量stu

然后在堆中创建该变量的对象

然后调用该对象的构造函数,并且返回该对象在堆中的地址。

THE END
1..Net平台的概念和组成部分net平台有哪些组成.NET 平台是一个跨平台的软件开发平台,由微软公司开发和维护。它提供了一个统一的环境和工具集,用于开发和执行各种类型的应用程序,包括桌面应用程序、Web 应用程序、移动应用程序、云服务等。下面是.NET 平台的概念和组成部分的介绍: Common Language Runtime (CLR) https://blog.csdn.net/Leslie_Dz/article/details/135865329
2.什么是ASP.NET?.NETASP.NET 是由 Microsoft 创建的开放源代码 Web 框架,助你使用 .NET 生成现代 Web 应用和服务。 ASP.NET 是跨平台的,在 Windows, Linux, macOS, and Docker 上运行。 .NET 平台 .NET 是一个开发人员平台,由工具、编程语言、库组成,用于构建许多不同类型的应用程序。 https://dotnet.microsoft.com/zh-cn/learn/aspnet/what-is-aspnet
3..NET体系概览图集2024最全总结腾讯云开发者社区跨平台,支持Windows、MacOS、Linux,支持x64,、x86、ARM架构。 二、.NET Framework框架 .NET Framework 是运行在 Windows 系列操作系统上的一个系统应用程序。 它是.NET 的核心部分,提供了建立和运行 .NET 应用程序所需要的编辑、编译等核心服务。 它包括2个重要组成部分:公共语言运行时 (Common Language Runtime,https://cloud.tencent.com/developer/article/2422682
4..net的系统结构图.net的组成部分.Net 是软件开发平台,可以使用不同的语言开发出相互集成的软件系统 类似于Windows,可以运行各种软件系统。是一套在Internet上可以无缝连接和沟通的软件技术、工具、产品和服务的总和。 .Net 的主要组成部分如下: 1、.Net Framework(.Net 框架) 2、 Visual Studio 集成开发环境IDE https://blog.51cto.com/u_16099213/6357648
5..net三层架构.NET三层架构将应用程序分为三个层次:表示层(UI)、业务逻辑层(BLL)和数据访问层(DAL)。每一层都有明确的职责和功能,分别负责用户交互、业务处理和数据存储等任务。 二、组成部分及其职责 表示层(UI): 负责用户界面和用户交互,是用户直接接触的部分。 接收用户输入并展示数据给用户。 可以使用ASP.NET Web窗体、https://agents.baidu.com/content/question/25c644c86d730eec1e9fd4a4
6..NET架构系统集成项目管理工程师4.5.4 .NET架构 .NET平台中集成了一系列的技术,例如,COM+和XML等,整个.NET平台包括四部分产品。 (1).NET开发工具。.NET开发工具由.NET语言(C#、VB.NET)、一个集成的IDE(Visual Studio.NET)、类库和通用语言运行时(CLR)构成。 (2).NET专用服务器。.NET专用服务器由一些.NET企业服务器组成,如SQL Server https://www.educity.cn/rk/695464.html