c#学习笔记
1|0PInvoke互操作技术
1|1代码编写
- c++编写
- c#调用
- c#编写,c++调用
-
传入c++里的内存由c#的垃圾回收器负责释放
-
当 C++ 函数在堆上分配内存时,内存的释放责任由调用者负责,而不是由 C++ 函数本身负责
1|2环境配置
2|0c#访问控制
- c#中的成员函数、变量必须保持与类前定义权限一致,与c++相比,必须在类前加访问控制
2|1一般情况(4种)
- public:public关键字表示类成员对外部代码是完全可见和可访问的。即其他类或代码可以直接访问标记为public的成员。这是最开放的访问级别
- private:private关键字表示类成员只能在当前类内部访问,其他类无法访问标记为private的成员。这实现了数据隐藏和封装,确保类的实现细节对外部代码是不可见的
- protected:protected关键字表示类成员只能在当前类内部和其子类中访问。这允许继承体系中的子类访问基类的受保护成员,但对于其他类仍然是不可见的
- internal:internal关键字表示类成员只能在当前程序集内部访问。这个访问级别对于模块化代码和库的内部实现很有用,它允许不同的程序集使用相同的internal成员,但对于其他程序集是不可见的
2|2特殊情况(2种)
- protected internal:protected internal关键字表示类成员可以在当前程序集内部和其子类中访问。它是protected和internal的结合,对于继承体系中的子类和同一程序集的其他类都是可见的。
- private protected:private protected关键字表示类成员可以在同一程序集内部和其派生类中访问,但是对于其他程序集的类是不可见的。它是private和protected的结合
3|0c#标准
3|1c++ & c# 数据结构对比
c++ | c # |
---|---|
vector | List |
map | SortedDictionary<TKey, TValue> |
set | HashSet |
queue | Queue |
stack | Stack |
priority_queue | PriorityQueue |
deque | LinkedList |
unordered_map | Dictionary<TKey, TValue> |
3|2c#语法
- 更改字符串的值
- enum
- io相关
- 委托 delegate
- 可以让你将方法作为参数传递给其他方法,或者在特定条件下执行多个方法
- System.Text.StringBuilder
- 相当于c++里的string
- enum遍历
- get,set自定义逻辑获值赋值
-
GC(Garbage Collection)
-
是.NET Framework(或.NET Core)中的一种自动内存管理机制,它负责自动回收不再使用的内存,并释放给操作系统。以下是.NET Framework 中的常见 GC 过程:
-
标记阶段(Marking Phase):GC 会从根对象开始,通过遍历对象图(Object Graph)来标记所有可达的对象。根对象包括全局变量、静态变量以及当前线程的栈上的变量。所有可达的对象会被标记为“存活”。
-
清理阶段(Sweeping Phase):在标记阶段后,GC 会扫描堆中的所有对象,清理未被标记的对象。未被标记的对象被认为是“垃圾”,会被回收。
-
压缩阶段(Compacting Phase):在清理阶段后,GC 会对堆中的存活对象进行压缩,将它们移动到一侧,从而使得堆空间变得更加连续,减少内存碎片化问题。
-
释放阶段(Release Phase):在压缩阶段后,GC 会将不再使用的堆内存释放给操作系统,使得这些内存可以被其他进程或应用程序使用。
-
-
GC 过程是非常复杂的,并且.NET Framework 提供了不同的 GC 实现(如标记-清除、标记-压缩、并发 GC 等),以适应不同的场景和需求
-
-
泛型
- 类似与c++的模板类
__EOF__

本文作者:InsiApple
本文链接:https://www.cnblogs.com/InsiApple/p/17570593.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
本文链接:https://www.cnblogs.com/InsiApple/p/17570593.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
本文来自博客园,作者:InsiApple,转载请注明原文链接:https://www.cnblogs.com/InsiApple/p/17570593.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!