c#软件开发学习笔记--类和对象、内存结构

C# 类与对象:面向对象编程的基石 面向对象编程(OOP)是现代软件开发的核心范式,而C#作为一门纯粹的面向对象语言,其类与对象的概念构成了整个语言体系的根基。本文将全面探讨C#中类与对象的方方面面,从基本概念到高级应用,帮助开发者深入理解这一重要主题。 阅读详情

c#软件开发学习笔记

一、类和对象

类是同一类对象的抽象,对象是类的某一特定实体。
类就是具有相同属性和方法的集合
对象就是类的实例化

1. 创建对象并给属性赋值

// 创建对象: 类名 对象名 = new 类名()
Student zhangsan  = new Student();
//对象属性赋值方式一 对象.属性=值
zhangsan.Name = "张三";
zhangsan.Age = 10;
zhangsan.Sex = "男";
//访问对象属性 对象.属性=值
Console.WriteLine(zhangsan.Age);

//创建对象 对象赋值方式二
Student lisi = new Student() { Name="李四",Age = 20,Sex="女"};

二、内存结构

1.栈(Stack)

栈是一种后进先出(LIFO)的数据结构,用于存储局部变量和方法调用的上下文(如参数、返回地址等)。在C#中,当一个方法被调用时,其局部变量和参数会在栈上被分配空间。方法执行完成后,这些空间会被自动释放,这就是所谓的栈帧(Stack Frame)的弹出。栈的大小是有限的,且通常是自动管理的。

2.堆(Heap)

堆是一种用于动态内存分配的区域,它的大小可以动态变化,且不像栈那样受到严格的限制。在C#中,堆主要用于存储对象实例。当使用new关键字创建对象时,内存会在堆上分配,并返回该对象的一个引用(通常是一个指向该对象内存地址的指针)。堆上的内存需要显式或隐式地释放,但在C#中,这通常是通过垃圾回收机制自动完成的。

3.静态存储区

静态存储区用于存储类的静态成员和静态变量。这些成员的生命周期与程序的生命周期相同,即从程序开始执行到程序结束。静态存储区不是栈或堆的一部分,而是程序内存布局中的一个独立区域。

4.常量存储区

常量存储区用于存储常量值,这些值在编译时就已确定,并在程序的整个生命周期内保持不变。常量通常存储在程序的代码段中,但也可以被视为内存布局的一个组成部分。

C#——类和对象 学习记录 阅读详情

相关推荐

C# 类、结构与扩展方法

C# 类、结构与扩展方法 我并非C#大神,只是用了这么久C#,会对这门语言有着一些自己的简介。为了总结一下自己对C#的认识,也为了能够和大家一起分享学习C#的过程,我打算把我的各种各样的理解写出来。 在今后这一系列博客中,我主要总结的是一些关于C#、.NET应用方面的经验,并不会对C#的历史、设计模式、算法、.NET的原理等作说明。由于是自己的感悟,因此难免会有错误的地方,所以欢迎大家来指正。

于益偲 3243

c#中类和对象详解

1.1 类和对象类(class) 是最基础的 C# 类型。类是一个数据结构,将状态(字段)和操作(方法和其他函数成员)组合在一个单元中。类为动态创建的类实例(instance) 提供了定义,实例也称为对象(object)。类支持继承(inheritance) 和多态性(polymorphism),这是派生类(derived class) 可用来扩展和专用化基类(base class)的机制。使用类声明可以创建新的类。类声明以一个声明头开始,其组成方式如下:先指定类的属性和修饰符,然后是类的名称,接着是基类(

凯旋 1万+

YOLOv5 改进点总览:轻量化、高精度的背后有哪些魔改?

YOLOv5是由Ultralytics团队开发的高效目标检测模型,其核心改进包括:主干网络采用CSPDarknet53提升梯度传播效率;特征融合使用PANet增强小目标识别;输出结构采用解耦头设计优化定位和分类任务。此外,YOLOv5通过CIoU损失函数、Mosaic数据增强和SimOTA标签分配机制进一步提升性能。模型支持多种推理格式(ONNX/TensorRT等),并具备自动锚框匹配和多尺度训练功能,使其在轻量化(yolov5s仅7MB)与高性能(最高51.2% mAP)间取得平衡,但缺乏正式论文支撑是

guoguozgw的博客 1805

C# 中的类与结构:了解差异和性能比较

在此示例中,我们定义了一个名为“Point”的结构,其中包含两个公共数据成员:“x”(一个 int)和“y”(一个 int)。然后,我们在不使用“new”关键字的情况下创建一个名为“point1”的结构的新实例,并使用点表示法设置其数据成员。在此示例中,我们定义了一个名为“Person”的结构,其中包含两个公共数据成员:“name”(字符串)和“age”(整数)。您不直接调用析构函数;使用类的主要好处之一是它们允许您封装数据和行为,这意味着您可以隐藏代码的实现细节,并仅公开其他开发人员使用所需的部分。

2401_82584055的博客 3409

用Python玩转农业大数据:从Landsat遥感影像到作物产量预测实战教程

本文详细介绍了如何利用Python处理Landsat遥感影像数据,并结合土壤信息构建作物产量预测模型。从环境搭建、数据预处理到模型训练与可视化,提供了一套完整的农业大数据分析实战方案,帮助读者掌握遥感影像处理和机器学习在精准农业中的应用。

weixin_30832143的博客 398

【SystemVerilog项目实践】4.AHB-SRAMC(验证计划)

验证计划

托马斯的博客 3660

C#学习笔记(上)

经本人搜集网上资料后整合而成的C#学习笔记,知识点很全面,前面某些很基础的内容绝大部分人都已经在学C/C++的时候学过了,所以基本一笔带过,其它地方都尽量写的很详细。

m0_75104457的博客 2315

Protobuf NDK以及QNX交叉编译

Protobuf 用处很广,尤其是通讯数据序列化,反序列化。TODO。

静虚待令,有物混成 1560

C#——结构和类问题总结

结构与类

我叫DP的博客 1494

H3C无线控制器二层注册实战:从零配置到AP上线全流程(附常见问题排查)

本文详细解析了H3C无线控制器二层注册的全流程,从网络基础准备、AC核心配置到AP上线,重点阐述了CAPWAP隧道建立的关键步骤。文章提供了清晰的典型配置示例,并针对AP无法上线、状态异常等常见问题,给出了六种典型故障现象的排查思路与解决命令,帮助网络工程师快速定位并解决问题。

weixin_29214199的博客 546

倾斜摄影数据转换为3DTile格式的方法:基于CesiumLab GIS

通过使用CesiumLab GIS,倾斜摄影数据可以方便地转换为3DTile格式,并在CesiumJS等3D地理信息可视化工具中进行展示和分析。一旦成功导入3DTile数据,就可以在CesiumLab GIS中利用其强大的可视化和分析功能进行进一步的处理。转换完成后,可以将生成的3DTile数据导入到CesiumLab GIS中进行可视化和分析。启动CesiumLab GIS应用程序,并按照界面上的指导导入转换后的3DTile数据。脚本将开始执行,并将倾斜摄影数据转换为3DTile格式。

ObDjango的博客 1076

从C#中的结构体和类的区别中看引用和值的问题

在 C#中,结构体和类有着多方面的区别且各有其适用场景。在作为参数传递时,类传递的是引用,方法内对参数的修改会影响原始对象;而结构体传递的是副本,方法内的修改不会作用于原始结构体。在内存分配方面,类对象实例存于堆内存,通过栈中的引用访问,结构体实例通常在栈中(特殊情况除外)。使用场景上,结构体适合表示简单、小型且无需继承和多态的数据集合,按值传递保证数据独立以及对性能要求较高的情况;类则用于需要引用语义、有着复杂业务逻辑和行为以及构建继承、多态的类型层次结构的场景。对于结构体实现引用,可以借助ref。

河西~石头 1855

Qt基础之十九:进程与QProcess

进程就是一个程序的执行实例,也就是正在运行的程序。对操作系统来说,进程就是一个担当分配系统资源CPU时间、内存的实体。在Qt 中,我们使用QProcess来表示一个进程。这个类可以允许我们的应用程序启动一个新的外部程序,并且与这个程序进行通讯。当外部程序开始启动时,QProcess的状态为Starting;外部程序已经启动时,QProcess的状态为Running,并发送started()信号;当外部层序退出了,QProcess的状态为NotRunning(初始状态),并发送finished()信号。

草上爬的博客 1万+

C# 学习笔记

MicrosoftVisualStudio(简称VS)是美国微软公司的开发工具包系列产品。VS是一个基本完整的开发工具集,是编写C#程序或者说.NET程序最常用的开发工具。因其功能强大、简单易用、速度快、智能度高,被网友戏称宇宙第一IDE。

qq_52144597的博客 2046

【AI编程】Trae 环境搭建与配置从使用到项目实战详解

Trae 环境搭建与配置从使用到项目实战详解

congge 5651

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

【C#】——类和对象

面向对象已经听了很多遍了,那到底什么是面向对象呢?今天终于学到了关于面向对象的一部分,那就是类和对象。 什么是对象? 看的见,摸得到的,特指的实体就是对象。 什么是类? 类就是模子,确定对象将会拥有的特性(属性)和行为(方法)。 如何创建一个类呢? public class Person { //字段 public string _name; ...

好吃的爆米花 873

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

c#中类与对象,简单理解

/ 现在 object3 和 object4 指向的是**同一个**机器人!// 把遥控器 object3 的信号**复制**给了遥控器 object4。// 用遥控器 object4 去看机器人的名字,输出也是 "Alice"它本身不储存那个庞大的顾客对象(数据),它只储存了一个“地址”,告诉计算机去内存里的哪个地方找到这个真实的对象。// 造了一个机器人,用遥控器 object3 控制它。// 只有一个叫 object2 的遥控器,还没配对任何机器人。

Tbisnic的博客 1682

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

C#结构体和类的区别

结构体(struct)是类(class)的轻量级版本。结构体是值类型,可用于创建行为类似于内置类型的对象。 比较 结构体和类共享许多特性,但与类相比有以下局限性。 结构体不能有默认构造函数(无参构造函数)或析构函数,构造函数中必须给所有字段赋值。 public struct Coords { public double x; public double y; public Coords() //错误,不允许无参构造函数 { this

devops 1568

C# 类和类的面向对象

在面向对象中,算法与数据结构被看做一个整体,称为对象。现实世界中任何类的对象都具有一定的属性和操作,也总能用数据结构与算法两者合二为一来描述,所以可以用下面的等式来定义对象和程序。对象=(算法+数据结构),程序=(对象+对象+……)。class 水果类public 颜色;//在水果类中定义颜色属性class 苹果类:水果类//苹果类中其他的属性和方法。

钢铁男儿 778

C#类和对象

c#类和对象

ET0783的博客 1103

C#中结构体与类的区别

结构是一种关键字struct声明的自定义数据类型。与类相似,也可以包含构造函数,常数,字段,方法,属性,索引器,运算符和嵌套类型等。不过,结构是值类型,类是引用类型。   结构体和类的区别 1、值类型与引用类型 结构体是值类型:值类型在栈上分配地址,所有的基类型都是结构类型,例如:int 对应System.int32结构,通过使用结构可以创建更多的值类型。 类是引用类型:引用类型在堆上分...

5498

C# 类 结构体

不管是C#的类还是结构体,他们的前面也要。

这是博客描述 1521

C#中的结构体与类的区别

首先是语法定义上的区别啦,这个就不用多说了.定义类使用关键字class 定义结构使用关键字struct.在语法上其实类和结构有着很多相似的地方. 1、结构体中声明的字段无法赋予初值,类可以: 执行以上代码将出现“结构中不能实例属性或字段初始值设定”的报错,而类中无此限制,代码如下: 2、结构体的构造函数中,必须为结构体所有字段赋值,类的构造函数无此限制: 补充:类与结构的选择 首先明确,类的对象是存储在堆空间中,结构存储在栈中。堆空间大,但访问速度较慢,栈空间小,访问速度相对更快。故而,当我们描述一个轻

腻害 2489

C#的类和对象

1.C#的类和对象介绍 类是最基础的 C# 类型。类是一个数据结构,将状态(字段)和操作(方法和其他函数成员)组合在一个单元中。类为动态创建的类实例提供了定义,实例也称为对象。类支持继承和多态性,子类通过继承父类用来扩展和专用化基类。使用类声明可以创建新的类。类声明以一个声明头开始,其组成方式如下:先指定类的属性和修饰符,然后是类的名称,接着是基类以及该类实现的接口。声明头后面跟着类的

阿布客栈 2427

C#中结构体和类的区别

结构体和类同样能够定义字段,方法和构造函数,都能实例化对象,这样看来结构体和类的功能好像是一样的了,但是他们在数据的存储上是不一样的C#结构体和类的区别问题:这两种数据类型的本质区别主要是各自指向的内存位置不同。传递类的时候,主要表现为是否同时改变了源对象。 1.结构体是值类型,类是引用类型虽然结构体的初始化也使用了new操作符,可是结构体对象依然分配在堆栈上而不是堆上类在传递的时候,传递的内容是...

Arthurian的博客 5172

C#中的类和对象

 C#和Java一样,是面向对象编程的,那么什么是对象呢,简单的说:万物皆对象.   说到对象,就要说说什么是类了:类是对事物的一种抽象定义,将抽象之后的特征和行为有机结合便构成了类,类是具有共同特征和行为的一类事物的统称.   举个简单的例子,人类就是一个类,那么每一个人就是具体的对象.对象本身是具体的,是客观存在的,而类则是一个抽象的概念,并非客观存在.理解类和对象之间的关系,首先需要 根...

国庆的博客 742
上一篇: c#软件开发学习笔记--Math函数、goto语句、可空类型
下一篇: c#软件开发学习笔记--方法
Z599817841
博客等级 码龄4年 12粉丝 41原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值