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);
        }
    }
}

 

posted @ 2023-09-14 14:25  HY10-SALTEST-FISH  阅读(20)  评论(0编辑  收藏  举报