C#(4):语言基本元素、类型、变量、方法、算法
穿插算法和数据结构
var类型可以根据复制自动推断变量属性。
在C#中,“堆”和“栈”主要的区别在于它们分配的方式以及生命周期:
1. 管理方式:堆由.NET运行时系统的垃圾示回收器自动管理,当系统判断某个对象不再使用时,会进行自动的内存回收。而栈由C#编译器自动管理,一般遵循后进先出的原则进行操作。
2. 存储内容:堆主要用于存储引用类型的实例(如class, delegate等),栈主要用于存储值类型(如int, char, bool, struct和double)以及引用类型的引用。
3. 数据访问速度:由于栈是由编译器自动管理,因此访问速度比堆要快。
4. 内存大小:堆的大小远大于栈,栈的大小是有限的。当执行一个方法时,方法中声明的局部变量会被压入栈中,方法执行完毕后,这些局部变量会被自动弹出栈。因此,如果数据量大,且不需要频繁的创建和销毁,应当使用堆;否则,如果数据量小,且生命周期短暂,应当使用栈。
5. 生命周期:为堆上的内存分配的生命周期直到垃圾回收器进行回收。而分配给栈的内存,当声明变量的范围运行完毕后,内存会立即释放。
6. 内存分配效率:栈上分配内存的效率更高,因为它是由直接移动堆栈指针完成的。对于堆来说,分配内存涉及到在堆上寻找足够大的连续内存空间,如果碎片化严重可能会导致分配失败。
需要注意的是:在C#中,还有一个叫做“代码堆”的地方,它用来存储程序集代码,这与我们谈论的堆栈空间是不同的范畴。
简单地说,堆和栈的主要区别在于其使用方式、数据访问速度、内存大小和生命周期。
应为get或set访问器:方法名没加括号
变量和方法(循环,递归)
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ClassMethodExample
{
class Program
{
static void Main(string[] args)
{
Calculator AddObeject = new Calculator();//实例化add为calculator对象,声明add是Calculator类的对象
int x = AddObeject.Add(1, 2);
Console.WriteLine(x);
Calculator GetDayObject = new Calculator();//声明GetDayObject是Calculator类的对象
string day = GetDayObject.GetToday();//调用对象的方法
Console.WriteLine(day);
Calculator PrintSub = new Calculator();
PrintSub.PrintSum(3,4);
}
}
class Calculator { //创建计算类
//创建相加方法(函数),public代表可以在主函数里公开调用
public int Add(int a,int b) {
int result = a + b;
return result;
}
public string GetToday(){ //创建计算类下的gettoday方法
int DayTime=DateTime.Now.Day;
return DayTime.ToString();
}
public void PrintSum(int a,int b) {
var Sum = a + b;
Console.WriteLine(Sum);
}
}
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现