csharp & c++

1。 析构函数 - CSharp中是在紧靠GC回收无用单元之前调用,而C++是在对象离开作用域时调用,两者有很大不同,因为GC何时回收是随机得,当它发现内存不足,或者CPU空闲或其他合适时间(什么是合适时间?我也不知道)就会调用,所以CSharp中的析构函数何时调用也是无法预知得. 那么,既然GC可以回收无用单元,CSharp中得析构函数是否无用呢?当然不是,比如说可以通过在类中定义静态变量,构造函数中++,析构函数中--,得到它当前得对象数目等等。

 2。数组 - CSharp中数组是作为对象来创建得以作为返回,所以定义一个数组,就是定义一个引用变量,当然它就可类型了。不同于一般的对象,数组可以通过直接赋值的方式来分配存储空间而隐藏NEW运算符。
不同于C++,CSharp中的数组上下限是严格控制的,超出会产生IndexOutRangeException异常。

 3。String - 同样,它也是对象,是引用类型。但不同于一般的引用类型,判断相等时,它所判断的不是引用是否指向相同对象,而是对字符串的内容本身进行比较。C++ 中它则是字符的数组。

 

转载于:https://www.cnblogs.com/felix_li/archive/2004/10/27/57169.html

C#调用C DLL是一种常见的跨语言调用方式,它可以实现在C#程序中使用C语言编写的动态链接库。下面是一个简单的步骤介绍如何实现C#调用C DLL。 首先,我们需要在C语言中编写一个动态链接库。这可以通过使用C语言的编译器(如gcc)来完成,将C源文件编译成动态链接库文件。库中的函数应该是在C中定义的,可以通过使用extern关键字来指定函数在库中的可见性。 接下来,在C#代码中调用C DLL。在C#中,可以使用DllImport特性来导入动态链接库,并在C#中声明与在C中定义的函数相对应的方法签名。DllImport特性有许多参数,其中最重要的是指定库的名称和导出函数的名称。例如: ```csharp using System.Runtime.InteropServices; public class MyClass { [DllImport("mydll.dll", CallingConvention = CallingConvention.Cdecl)] public static extern int myFunction(int arg1, int arg2); public static void Main() { int result = myFunction(10, 20); Console.WriteLine(result); } } ``` 在上面的示例中,我们通过DllImport特性导入了名为“mydll.dll”的C DLL,并声明了一个与C中的myFunction函数相对应的C#方法签名。然后,我们可以在C#中直接调用myFunction方法,并传递参数。最后,我们打印出从C DLL返回的结果。 需要注意的是,需要确保C#和C DLL之间的数据类型匹配。通常的做法是使用基本数据类型(如整数、浮点数等),以保持数据在不同语言之间的一致性。 总结起来,C#调用C DLL是一种方便的方式,可以让我们在C#中使用C语言编写的动态链接库。通过使用DllImport特性,我们可以方便地导入C DLL,并在C#中调用其中定义的函数。这种跨语言调用方式为我们提供了更加灵活和多样化的开发选择。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值