随笔分类 - C#
c++中指针类型在c#中怎么对应?
摘要:int[]a=newint[5];//取a[3]的地址IntPtraddr=System.Runtime.InteropServices.Marshal.UnsafeAddrOfPinnedArrayElement(a,3)
阅读全文
如何在C#中模拟C++的联合(Union)?[C#, C++] How To Simulate C++ Union In C#?
摘要:1 什么是联合?联合(Union)是一种特殊的类,一个联合中的数据成员在内存中的存储是互相重叠的。每个数据成员都在相同的内存地址开始。分配给联合的存储区数量是“要包含它最大的数据成员”所需的内存数。同一时刻只有一个成员可以被赋给一个值。下面我们来看看C++中如何表达联合://Code#01union...
阅读全文
C# 定义常量 两种实现方法
摘要:在C#中定义常量的方式有两种,一种叫做静态常量(Compile-time constant),另一种叫做动态常量(Runtime constant)在C#中定义常量的方式有两种,一种叫做静态常量(Compile-time constant),另一种叫做动态常量(Runtime constant)。前...
阅读全文
C#中DllImport用法和路径问题
摘要:DllImport是System.Runtime.InteropServices命名空间下的一个属性类,其功能是提供从非托管DLL导出的函数的必要调用信息。 DllImport属性应用于方法,要求最少要提供包含入口点的dll的名称。 DllImport的定义如下:[AttributeUsage(At...
阅读全文
C#: 方法的默认参数
摘要:大家都知道在C++中,我们可以为方法的参数指定一个默认值,像这样:void foo(int i = 100);当我们以这种形式调用方法的时候: foo(); 实际上参数i被赋于了默认值,所以相当于调用了foo(100);然而在C#中是不支持参数的默认值的,那么如果我们要用到类似的功能应该怎么实现呢?...
阅读全文
枚举
摘要:枚举类型声明为一组相关的符号常数定义了一个类型名称。枚举用于“多项选择”场合,就是程序运行时从编译时已经设定的固定数目的“选择”中做出决定。 枚举类型(也称为枚举)为定义一组可以赋给变量的命名整数常量提供了一种有效的方法。例如,假设您必须定义一个变量,该变量的值表示一周中的一天。该变量只能存储七个...
阅读全文
C#中的IntPtr类型
摘要:本文转自:http://zhidao.baidu.com/question/22825956.html问:c#中无法将类型“int”隐式转换为“System.IntPtr”这个是我引用了一个api函数时出现的问题,我在声明中把intptr换成了int还是不可以,这是为什么呢?要如何处理呢?答:您好,...
阅读全文
C#与C++对应的类型
摘要://c++:HANDLE(void*)----c#:System.IntPtr//c++:Byte(unsignedchar)----c#:System.Byte//c++:SHORT(short)----c#:System.Int16//c++:WORD(unsignedshort)---c#:S...
阅读全文
C#之数组
摘要:什么是数组?数组是一种数据结构,包含同一个类型的多个元素。数组的声明:int[] myIntArray; 注:声明数组时,方括号 ([]) 必须跟在类型后面,而不是变量名后面。在 C# 中,将方括号放在变量名后是不合法的语法。数组的初始化:我们知道数组是引用类型,所以需要给他分配堆上的内存。1.my...
阅读全文
C#中的结构体与类的区别
摘要:经常听到有朋友在讨论C#中的结构与类有什么区别.正好这几日闲来无事,自己总结一下,希望大家指点.1. 首先是语法定义上的区别啦,这个就不用多说了.定义类使用关键字class 定义结构使用关键字struct.在语法上其实类和结构有着很多相似的地方. 定义类的语法 1 class Person 2 {...
阅读全文
理解C#值类型和引用类型
摘要:网上偶尔浏览到这一篇文章,还不错就修改了下分享给大家。 工作许久了,可是对C#值类型和C#引用类型却一直无法很好的理解。这两天花了不少时间查找资料,看文章,终于有所收获,在此将自己理解整理出来,方便日 后自己查看,同时希望对跟我有一样困惑的朋友有所帮助。废话不多说,下面开始说说怎么理解值类型和...
阅读全文
C#引用传递
摘要:学过C#的人都知道,通过值或通过引用,值类型和引用类型都可以作为方法参数传递。在C#中,不管是值类型或者是引用类型,所有方法参数在默认情况下是通过值传递的。1)通过值传递值类型在通过值传递作为方法参数的变量时,传递给方法的是数据副本。在方法中对该数据的任何修改都不会对初始值有任何影响。C#如下代码:...
阅读全文
C#中垃圾回收与内存管理机制
摘要:今天抽空来讨论一下.Net的垃圾回收与内存管理机制,也算是完成上个《WCF分布式开发必备知识》系列后的一次休息吧。以前被别人面试的时候问过我GC工作原理的问题,我现在面试新人的时候偶尔也会问相关的问题。那么你是否也遇到这样的问题呢?比如你清楚.Net的垃圾回收机制吗?你能简述一下GC的工作原理吗?怎...
阅读全文
C#下内存管理--垃圾收集
摘要:章节安排内存管理简介垃圾回收机制性能问题C#下非托管资源的处理要强调的几点References内存管理简介 对于任何一种编程语言,内存管理都是不得不提很重要的一块内容,但可惜的是目前为止没有任何一种编程语言对内存管理处理的非常完美,每种语言都在兼顾性能 效率,语法语义易用性等方面折中中有所侧重。例如...
阅读全文
属性类
摘要:从抽象类 System.Attribute 派生的类(不论是直接的还是间接的)都称为属性类。一个关于属性类的声明定义一种新属性,它可以被放置在其他声明上。按照约定,属性类的名称带有 Attribute 后缀。使用属性时可以包含或省略此后缀。http://msdn.microsoft.com/zh-c...
阅读全文
使用 DllImport 属性
摘要:本主题说明 DllImport 属性的常见用法。第一节讨论使用 DllImport 从托管应用程序调用本机代码的优点。第二节集中讨论封送处理和 DllImport 属性的各个方面。从托管应用程序调用非托管代码当在托管应用程序中重用现有的非托管代码时,DllImport 属性非常有用。例如,托管应用程...
阅读全文
DllImport属性详解
摘要:API函数是构筑Windows的基石, 是Windows编程的必备利器。每一种Windows应用程序开发工具都提供间接或者直接的方式调用Win32API,C#也不例外。使用Win32API的一个好处就是,我们可以实现更多的功能。首先,要引入命名空间:using System.Runtime.Inte...
阅读全文
dll开发中遇到的问题
摘要:刚碰到个问题,我的一个项目中引用了一个dll,这个dll又引用了另一个dll,我把这俩个都放在bin文件夹下,但是会报错,说第二个dll找不到。把它放到系统文件夹system32下就没事了。但是遇到一个奇怪的问题,我的各部分代码是只有的:Text.cint plus(int a,int b){ re...
阅读全文
如何逐步实现动态库的加载,类型的匹配
摘要:如何逐步实现动态库的加载,类型的匹配,动态链接库函数导出的定义,参考下面宏定义即可:#defineLIBEXPORT_APIextern"C"__declspec(dllexport)第一步,我先从简单的调用出发,定义了一个简单的函数,该函数仅仅实现一个整数加法求和:LIBEXPORT_APIint...
阅读全文
在C#调用C++的DLL简析(一)——生成非托管dll
摘要:经过一晚上的折腾,还是下点决心将些许的心得写下来,以免以后重复劳动。C#与C/C++相 比,前者的优势在于UI,后者的优势在于算法,C++下的指针虽然恶心,若使用得当还是相当方便的,最重要的问题是,市面上很多流行的开发工具库,几乎没 有不支持C++的,但全面支持C#只能说是难得,在CPU发展到今天,...
阅读全文