C#.2

mac2022-06-30  23

一.在C#中一般是不会将成员函数放在类外实现的 而是在类内实现,

存在内联函数,但要注意,在何处内联代码的决定完全由CLR做出,我们无法使用像C++中inline这样的关键字来控制那些方法是内联的.-----------引自<<C#高级编程>>-P81

二.

C#编译方式和C不同,对文件的读取顺序,和成员以及类型的定义顺序没有要求,所以不需要头文件。。C++和C有明确的顺序要求,(函数)定义必须在使用(被调用)之前写,所以需要先包含头文件,让定义的内容总在最前面。。。

 

c# 是面向对象的,也没有你说的函数的关系啊

 

三.

没有。因为 c/c++ 的二进制格式不包含元数据,如果没有 .h 文件,就无法获知类的信息、函数的签名和数据的结构。而 C# / Java 的二进制格式包含了元数据,你可以认为是功能实现和 .h 文件都封装在了一起。这样使用的时候就可以直接通过二进制文件获得足够的信息来使用功能。

PS:也就是说 类的实现定义等等都封装在一块了

以及 .cs文件编译后会是二进制文件 

四.

问题:

那C++里可以只给你头文件 然后加上一个.lib 一个静态链接 (就像DX那样)

就可以在让别人看不见你的函数实现的情况下 调用你的library

那C#如何做到这一点呢?

 

答:你首先要把原来类的声明和类的实现放一块 也就是在类内实现了

然后做成放在一个名空间里 然后using namespace yourdll

就可以了

五.C#不需要像之前就是先声明才能使用那一套 直接using一个名空间 将那个名空间的成员变成全局的 直接用就可以了

即“对定义顺序没有要求"

 

lib应该和dll一样 都可以隐藏实现

 

最新回复(0)