
C#学习笔记
梦想田园
用学习去充实自己,用实践去证明自己,用梦想去展现自己
展开
-
C#中DataSet和DataTable区别
你可以把DataTable和DataSet看做是数据容器,比如你查询数据库后得到一些结果,可以放到这种容器里,那你可能要问:我不用这种容器,自己读到变量或数组里也一样可以存起来啊,为什么用容器?原因是,这种容器的功能比较强大,除了可以存数据,还可以有更大用途。举例:在一个c/s结构的桌面数据库系统里,你可以把前面存放查询结果的容器里的数据显示到你客户端界面上,用户在界面上对数据进行添加、删除、原创 2014-10-06 23:51:08 · 369 阅读 · 0 评论 -
C#的Socket的Available属性
C#的Socket的Available属性是记录当前缓冲区的数据量原创 2014-12-30 10:10:26 · 3518 阅读 · 0 评论 -
托管代码与非托管代码的区别
托管代码(Managed Code)就是中间语言(IL)代码,在公共语言运行库(CLR)中运行。编译器把代码编译成中间语言,当方法被调用时,CLR把具体的方法编译成适合本地计算机运行的机器码,并且将编译好的机器码缓存起来,以备下次调用使用。随着程序集的运行,CLR提供各种服务:内存管理,安全管理,线程管理,垃圾回收,类型检查等等。 非托管代码,直接编译成目标计算机码,由操作系统直转载 2015-01-17 13:07:25 · 693 阅读 · 0 评论 -
c#多线程中Lock()的用法
本文介绍C# lock关键字,C#提供了一个关键字lock,它可以把一段代码定义为互斥段(critical section),互斥段在一个时刻内只允许一个线程进入执行,而其他线程必须等待。 每个线程都有自己的资源,但是代码区是共享的,即每个线程都可以执行相同的函数。这可能带来的问题就是几个线程同时执行一个函数,导致数据的混乱,产生不可预料的结果,因此我们必须避免这种情况的发生。原创 2014-12-13 12:51:21 · 910 阅读 · 0 评论 -
关于Socket连接,远程主机强制断开
在服务器端的程序与客户端的程序进行通信的过程中,如果客户端程序由于断电,断网等原因掉线,服务器端的程序是无法检测到客户端断开连接的。解决办法一是设置超时值,当服务器端在多长时间接收不到数据时就默认对方已经不在线了。另一种方法就是设置心跳机制,即客户端或服务器端的程序,每隔一定的时间为对方发送一个心跳包,对方并予以回复,如果不回复,则就认为是对方已经断开连接。原创 2014-12-29 16:45:32 · 3341 阅读 · 0 评论 -
try-catch-finally
1.try-catch-finally处理异常机制,当try中的代码执行出现异常时,会有catch进行捕获,并在finally中处理指定的操作,finally能够保证它的代码最终能够得到执行,考虑如下代码: try { int[] a = new int[0]; a[0] = 1;原创 2014-12-05 15:45:40 · 407 阅读 · 0 评论 -
C#多线程问题
C#由主线程创建子线程的时候必须显示将其设置为子线程,否则,当主线程退出时,子线程的资源将不被释放。原创 2014-12-02 15:19:00 · 766 阅读 · 0 评论 -
[*.vshost.exe] ---宿主进程
[*.vshost.exe] 也叫宿主进程,是VS2005/2008/2010中的一项功能,能提高调试性能,支持部分信任调试并支持设计时表达式计算。宿主进程文件的文件名中包含 vshost, 并位于项目的输出文件夹中。 托管程序是通过[*.vshost.exe]启动的,而[*.vshost.exe]是一个固定的程序,在每次启动调试过程前,VS会把[*.vshost.exe]拷贝到被调试原创 2014-12-02 11:18:15 · 818 阅读 · 0 评论 -
c#中new一个对象以后,是否需要手动释放?
不需要。因为.net里面的CLR(common language runtime)会自动内存管理。原创 2014-10-20 16:07:11 · 6157 阅读 · 0 评论 -
数据库中byte[]的用法
byte[]为字节数组,在编程过程中将其转换为结构体,原创 2014-10-28 16:04:15 · 5393 阅读 · 0 评论 -
命名空间System.Data.Sql和System.Data.Sqlclient的区别
System.Data.Sql 命名空间包含支持 SQL Server 特定的功能的类。原创 2014-10-08 09:15:02 · 2200 阅读 · 0 评论 -
C#中@作用
通常来说,在字符串里面的特殊符号比如 ",\ 等都要转义,比如一个字符串是:C:\Documents\1.txt在定义的时候就要这样写:string path="C:\\Documents\\1.txt";才可以正常识别,否则单个 \ 号会和后面的字符成转义字符,如果恰巧是无法识别的转义序列,那么会抛出异常。而@的意思就是告诉编译器,这里面的字符不需要转义,比如上面就是这样:s原创 2014-10-06 23:20:52 · 533 阅读 · 0 评论 -
关于调用动/静态链接库的问题
一般说来,如果同一段代码,一个写成DLL,一个作为函数直接定义,则DLL调用肯定要慢一些。原因如下: 一个程序如果要使用DLL中的函数,则必须经过,如下步骤:1、将DLL文件装入内存,win32的方法是 :LoadLibrary(...);2、取得指定的函数的入口地址,方法好像是: GetProcessAddr(.....)3、通过函数指针,调用函数。 而直接在程序中定义函数,则没有原创 2014-12-31 09:50:02 · 516 阅读 · 0 评论