c#基础概念
文章平均质量分 71
luckyone906
这个作者很懒,什么都没留下…
展开
-
c#跳转语句详解
即为标签名,再加上冒号":",标签名大家可以随意取,比如aa,bb,反正随大家喜欢.这四句代码的意思是,第一句:定义变量i,第二句:跳转到标签为cc的语句,接下来就输出i的结果,可以看出,第三句是无意义的,因为没有被执行,跳过去了,所以输出的值是0,而不是9.goto 的意思是跳转到的意思,那么跳转到哪里呢,当然是跳转到另一个语句,如何标示这个要跳转到的语句,答案是在该语句前加上标签。goto跳转的语句,并不是一定要跳转到之后的语句,也就是说,goto还可以跳到前面去执行。输出结果:从这里继续执行...原创 2024-05-29 20:19:43 · 834 阅读 · 0 评论 -
C#中遍历类的属性和值
c#原创 2022-10-09 21:49:15 · 2134 阅读 · 0 评论 -
Lock锁的问题
多个线程共用一个锁时,同一时间只有一个可获得锁执行,其他线程会阻塞进入队列,按理解事件如果是多线程的,那么每次事件触发的含lock的函数都会将进入队列等待,越排越多。需待实验证明。public class Test { public void Fun1() { Task.Factory.StartNew(() => {...原创 2020-01-11 13:50:37 · 346 阅读 · 0 评论 -
C# Marshal的使用,非托管内存中分配内存注意的问题
IntPtr ptr = Marshal.AllocHGlobal(704* 576 * 3);如果没有手动释放内存,会有内存溢出;发生OutOfMemoryException 没有足够的内存继续执行程序时引发的异常。调用Marshal.AllocHGlobal必须调用 Marshal.FreeHGlobal(ptr);来手动释放内存,即使调用GC.Collect();方法也无法...原创 2020-01-09 21:59:29 · 3365 阅读 · 0 评论 -
C#中Marshal 类的内存操作的一般功能概述
Marshal 类的内存操作的一般功能Marshal类提供了一个方法集,这些方法用于分配非托管内存、复制非托管内存块、将托管类型转换为非托管类型,此外还提供了在与非托管代码交互时使用的其他杂项方法。命名空间:System.Runtime.InteropServicesMarshal 类中定义的 static 方法对于处理非托管代码至关重要。此类中定义的大多数方法通常由需要在托...原创 2020-01-09 21:57:35 · 4259 阅读 · 0 评论 -
C#内存分配概念
在C#中,内存分成5个区,他们分别是堆、栈、自由存储区、全局/静态存储区和常量存储区。栈,就是那些由编译器在需要的时候分配,在不需要的时候自动清楚的变量的存储区。里面的变量通常是局部变量、函数参数等。堆,就是那些由new分配的内存块,他们的释放编译器不去管,由我们的应用程序去控制,一般一个new就要对应一个delete。如果程序员没有释放掉,那么在程序结束后,操作系统会自动回收。...原创 2020-01-09 21:56:25 · 2241 阅读 · 1 评论 -
C#四种相等性判断方法 equals,referenceEquals
C#中的ReferenceEquals、Equals以及== C#中有一共有四种相等性判断方法://Object中定义的三个方法public static bool ReferenceEquals(object objLeft, object objRight);public static bool Equals(object objLeft, object objRigh...原创 2020-01-09 21:37:35 · 2191 阅读 · 0 评论 -
File.Create创建文件后,需要释放…
if (!File.Exists(SavePath)) { File.Create(SavePath).Close(); }转载 2018-12-13 16:00:46 · 2901 阅读 · 0 评论 -
关于.NET编译的目标平台(AnyCPU,x86,x64)
在VisualStudio中项目平台属性包含x86/x64/AnyCPU三个选项,之前的项目中并没有特别去关注这一点,最近的项目中涉及到了在不同平台运行的问题,所以专门了解并整理了这方面的知识。x86/x64/AnyCPU的含义在vs中这一选项被称为“目标平台”,也就是编译成功的项目最终是要在什么平台上运行。 编译(目标)平台 含义x86 将程序集编译为由兼容 x86 的...转载 2018-11-08 16:34:56 · 1127 阅读 · 0 评论 -
C#实现缩放和剪裁图片的方法示例
C#实现缩放和剪裁图片的方法。分享给大家供大家参考,具体如下:?123456789101112131415161718192021222324252627282930313233343536373839404转载 2018-02-07 14:45:55 · 531 阅读 · 0 评论 -
String到底是值类型还是引用类型(C#)
MSDN 中明确指出 String 是引用类型而不是值类型,但 String 表面上用起来却像是值类型,这又是什么原因呢? 首先从下面这个例子入手: //值类型 int a = 1; int b = a; a = 2; Console.WriteLine("a is {0},b is {1}", a, b); //引用类型 strin转载 2018-01-30 10:50:06 · 10271 阅读 · 6 评论 -
c#中字节数组byte[]、图片image、流stream,字符串string、内存流MemoryStream、文件file,之间的转换
字节数组byte[]与图片image之间的转化字节数组转换成图片public static Image byte2img(byte[] buffer){ MemoryStream ms = new MemoryStream(buffer); ms.Position = 0; Image img = Image.FromStream(ms); ms.Clos转载 2018-01-24 12:38:59 · 1667 阅读 · 3 评论 -
c#中已知一个外部窗口的句柄,怎么关闭
已知一个外部窗口的句柄,怎么关闭它。怎么给这个窗口的一个文本框设置内容。 c#已知一个外部窗口的句柄,怎么关闭它。怎么给这个窗口的一个文本框设置内容。本文地址 :CodeGo.net/1079020/ ---------------------------------------------------------------------------------------转载 2017-12-28 17:08:43 · 3176 阅读 · 0 评论 -
c#中如何实现拷贝对象
大家都知道,在C#中变量的存储分为值类型和引用类型两种,而值类型和引用类型在数值变化是产生的后果是不一样的,值类型我们可以轻松实现数值的拷贝,那么引用类型呢,在对象拷贝上存在着一定的难度。 下面我么从一个经典的例子谈起。private void doChange(string a) { int b = a; b = "2"; System.Consol转载 2017-12-15 16:30:51 · 1014 阅读 · 0 评论 -
句柄概念
句柄(handle),有多种意义,其中第一种是指程序设计,第二种是指Windows编程。现在大部分都是指程序设计/程序开发这类。第一种解释:句柄是一种特殊的智能指针 。当一个应用程序要引用其他系统(如数据库、操作系统)所管理的内存块或对象时,就要使用句柄。第二种解释:整个Windows编程的基础。一个句柄是指使用的一个唯一的整数值,即一个4字节(64位程序中为8字节)长的数值,来标识应转载 2017-12-20 11:53:55 · 4411 阅读 · 1 评论 -
安装包,创建快捷方式,开机启动项,配置文件参数覆盖窗体类库
//using IWshRuntimeLibrary;using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.IO;using System.Linq;using System.Text;...转载 2018-12-10 11:18:31 · 440 阅读 · 0 评论 -
C#修改文件或文件夹的权限,为指定用户、用户组添加完全控制权限
写在前面在windows系统中,c盘中的目录权限比较高,有时制作安装包的时候,默认的安装路径就是在c盘,但对运行可执行文件,有时候需要为其添加完全控制权限,或者读写权限。这里将当时的解决方案记录一下。代码实现在C盘添加一个文件夹,并在文件夹内部,新建一个文本文件,如图所示:该文件夹下,新建一个文本文件,如图所示:为文件添加完全控制权限: /// ...转载 2018-12-11 11:34:20 · 697 阅读 · 0 评论 -
C++ 事件编程
++ 事件编程在微软 .NET 框架中可以定义托管类事件并用委托和 += 操作符处理这些事件。这种机制似乎很有用,那么在本机 C++ 中有没有办法做同样的事情?Several Readers 确实如此!Visual C++ .NET 具备所谓统一事件模型(Unified Event Model),它可以像托管类一样实现本机事件(用 __event 关键字),但是由于转载 2017-09-05 10:56:45 · 3131 阅读 · 1 评论 -
如何在C#控件中画点并获得指定点的像素颜色
画点的方法:方法一: 用picGraphics.FillRectangle(new SolidBrush(fillColor), p.X, p.Y, 1, 1); 即用一个像素填充方法.方法二: 用gdi32.dll库中的SetPixel方法[DllImport("gdi32.dll")]private static extern int SetPix...原创 2019-08-14 19:08:15 · 2179 阅读 · 1 评论 -
C# 获取鼠标相对当前窗口坐标的方法
编写客户端应用程序时,经常要用到鼠标当前的位置。在C#的winform开发中,可以用Control.MousePosition获得当前鼠标的坐标,使用PointToClient计算鼠标相对于某个控件的坐标。示例如下:Point screenPoint = Control.MousePosition;//鼠标相对于屏幕左上角的坐标Point formPoint = this.Poin...原创 2019-08-14 10:27:52 · 5176 阅读 · 0 评论 -
C#用到windows 消息列表Message类MSG的id代号
C# Constants:private const UInt32 WM_ACTIVATE = 0x0006;private const UInt32 WM_ACTIVATEAPP = 0x001C;private const UInt32 WM_AFXFIRST = 0x0360;private const UInt32 WM_AFXLAST = 0x037F;private cons...转载 2019-07-22 16:54:14 · 608 阅读 · 0 评论 -
C#线程同步(1)- 临界区&Lock
文章原始出处http://xxinside.blogbus.com/logs/46441956.html预备知识:线程的相关概念和知识,有多线程编码的初步经验。 一个机会,索性把线程同步的问题在C#里面的东西都粗略看了下。 第一印象,C#关于线程同步的东西好多,保持了C#一贯的大杂烩和四不象风格(Java/Delphi)。临界区跟Java差不多只不过关键字用lock替代了sync...转载 2019-07-29 14:44:29 · 474 阅读 · 0 评论 -
C# Message 消息处理
一、消息概述 Windows下应用程序的执行是通过消息驱动的。消息是整个应用程序的工作引擎,我们需要理解掌握我们使用的编程语言是如何封装消息的原理。C#自定义消息通信往往采用事件驱动的方式实现,但有时候我们不得不采用操作系统的消息通信机制,例如在和底层语言开发的DLL交互时,是比较方便的。下面列举了一些实现方式,供大家参考.1 什么是消息(Message) 消息就是通知...转载 2019-03-19 12:05:24 · 5125 阅读 · 0 评论 -
C# 解决窗体假死的状态 非常有用!且非常重要!
异步调用是CLR为开发者提供的一种重要的编程手段,它也是构建高性能、可伸缩应用程序的关键。在多核CPU越来越普及的今天,异步编程允许使用非常少的线程执行很多操作。我们通常使用异步完成许多计算型、IO型的复杂、耗时操作,去取得我们的应用程序运行所需要的一部分数据。在取得这些数据后,我们需要将它们绑定在UI中呈现。当数据量偏大时,我们会发现窗体变成了空白面板。此时如果用鼠标点击,窗体标题将会出现”失去...转载 2019-03-17 17:47:00 · 1820 阅读 · 0 评论 -
C#SMTP发邮件
简单邮件传输协议 (Simple Mail Transfer Protocol, SMTP) 是事实上的在Internet传输email的标准。C#邮件传输主要用到了SmtpClient 和MailMessage 类。SmtpClient类是客户端类,客户端的Send方法实现了发送邮件的功能。Send方法的参数是MailMessage对象。MailMessage类是邮件信息类,通过F...转载 2019-01-14 20:00:43 · 769 阅读 · 0 评论 -
深入了解Windows句柄到底是什么
总是有新入门的Windows程序员问我Windows的句柄到底是什么,我说你把它看做一种类似指针的标识就行了,但是显然这一答案不能让他们满意,然后我说去问问度娘吧,他们说不行网上的说法太多还难以理解。今天比较闲,我上网查了查,光是百度百科词条“句柄”中就有好几种说法,很多叙述还是错误的,天知道这些误人子弟的人是想干什么。这里我列举词条中的关于句柄的叙述不当之处,至于如何不当先不管,继续往下看就转载 2017-12-20 11:43:25 · 326 阅读 · 0 评论 -
C# 理解lock
一. 为什么要lock,lock了什么?当我们使用线程的时候,效率最高的方式当然是异步,即各个线程同时运行,其间不相互依赖和等待。但当不同的线程都需要访问某个资源的时候,就需要同步机制了,也就是说当对同一个资源进行读写的时候,我们要使该资源在同一时刻只能被一个线程操作,以确保每个操作都是有效即时的,也即保证其操作的原子性。lock是C#中最常用的同步方式,格式为lock(objec转载 2017-10-29 19:54:56 · 369 阅读 · 0 评论 -
C#中Invoke 和 BeginInvoke的涵义和区别
BeginInvoke 方法真的是新开一个线程进行异步调用吗?参考以下代码:public delegate void treeinvoke();private void UpdateTreeView(){ MessageBox.Show(System.Threading.Thread.CurrentThread.Name);}priv转载 2017-10-29 19:53:34 · 611 阅读 · 0 评论 -
如何使用C#自带的GDI+双缓冲类BufferedGraphics实现双缓冲功能
小白摸索着编写一个上位机界面,将遇到的问题及解决方法记录下,以供后来的小白使用哈。这篇文章解决的问题是在绘图时候的闪烁问题。其中网上有些介绍的设置控制方式controlstyle的方法,这个方法我的理解是比较适合于在一个完整的窗口当中绘图。如果要在一个窗口当中的内部容器或者控件内画图的话就不太适合,通常按照前述的方法设置后没有任何效果。对于在窗口内部的绘图的来说,比较有效的方法是在内存当中开辟一块转载 2017-09-07 16:40:17 · 2464 阅读 · 0 评论 -
浅析C#中foreach引用变量
昨天做老师的网站作业。要对一些对象做添加修改删除处理。别的倒没什么,删除时出现了点问题似的。因为是从一个类的集合中删除掉一个元素。这样就要遍历整个集合,而foreach正是为遍历准备的新玩意。自然而然用上了。于是代码类似如下:string temp = name.Text; // 从TextBox中读出数据 foreach (LCourse cou in Data.myCourse)转载 2017-09-22 17:44:59 · 4122 阅读 · 0 评论 -
关于Direct2D
㈠ 关于Direct2D Direct2D是一个硬件加速的,提供立即模式的二维图形API。它提供了二维的几何体,位图,文本的高性能,高质量的渲染。十分方便的是,Direct2D与GDI,GDI+和D3D都是可以交互的。一项技术总是有其受众面,看看微软本身怎么说的:大型企业级本机应用程序开发人员。创建供下游开发人员使用的控件工具包和库的开发人员。需要对二维图形进行服务器端呈现的转载 2017-09-13 10:54:13 · 1548 阅读 · 0 评论 -
DirectX学习笔记_关于Sprite.Draw2D的说明
在DirectX的Sprite中提供一个Draw2D的方法,该方法绘制一个Sprite对象用于二维空间中显示,在DirectX 9.0C中,该方法有6个重载,分别是 1 public void Draw2D(Texture srcTexture, PointF rotationCenter, float rotationAngle, PointF position, Color c转载 2017-09-13 10:47:58 · 1046 阅读 · 0 评论 -
使用directX 7结合C#进行2D游戏编程
使用directX 7结合C#进行2D游戏编程前言对于C#的开发人员来讲,GDI+ 是一个拥有丰富的绘图API指令、传统、高效的程序集。但不幸的是,你要想用她来开发一个复杂而又平滑的动画的时候,我们会发现GDI+只能做到有限的快。因此,它是绝不适合做游戏开发;不要妄想你那飞快的处理器和崭新的、长着奇异形状的图形卡,到DirectX API来。不幸的是,.net和C#并非Di转载 2017-09-13 10:39:33 · 1845 阅读 · 0 评论 -
C# 泛型(Generic)
泛型(Generic) 允许您延迟编写类或方法中的编程元素的数据类型的规范,直到实际在程序中使用它的时候。换句话说,泛型允许您编写一个可以与任何数据类型一起工作的类或方法。您可以通过数据类型的替代参数编写类或方法的规范。当编译器遇到类的构造函数或方法的函数调用时,它会生成代码来处理指定的数据类型。下面这个简单的实例将有助于您理解这个概念:using System;using转载 2017-08-04 14:03:45 · 240 阅读 · 0 评论 -
C#创建com组件
本文详细阐述如何用C#创建COM组件,并能用VC6.0等调用。并附有完整测试通过的代码。废话不多说,下面开始介绍:开发工具:VS2010VS2010命令提示符在:开始-所有程序-Visual Studio 2010-Visual Studio Tool-命令提示符 在用C#创建COM组件时,一定要记住以下几点:1:所要导出的类必须为公有;2:所有属性、转载 2017-07-24 23:15:18 · 4891 阅读 · 0 评论 -
WPF Application启动界面设置——
本文章已收录于: 设置WPF从不同界面启动可以通过设置“StartupUri”属性完成。http://blog.csdn.net/bamboo_slit/article/details/7164848设置Star转载 2017-06-09 13:34:01 · 2286 阅读 · 0 评论 -
System.Windows.Forms.Timer与System.Timers.Timer的区别
.NET Framework里面提供了三种Timer:System.Windows.Forms.TimerSystem.Timers.TimerSystem.Threading.TimerVS.NET 2005默认只有一个Timer控件,但那是System.Forms.Timer控件.如果要使用System.Timers.Timer的控件,需要在工具箱上单击转载 2017-02-07 16:55:35 · 1497 阅读 · 0 评论 -
常见功能类库及功能
BitConverter 数据转换类Array 数组类原创 2016-11-16 21:49:07 · 410 阅读 · 0 评论 -
C# GDI+ 绘图
1 坐标系统(1) 坐标原点:在窗体或控件的左上角,坐标为(0,0)(2) 正方向:X轴正方向为水平向右,Y轴正方向为竖直向下(3) 单位:在设置时,一般以像素为单位,像素(Pixel)是由图像(Picture)和元素(Element)组成,是用来计算数码影像的一种单位。把影像放大数倍,会发现这些连续的色调其实是有许多色彩相近的小方点组成,这些小方点是构成影像的转载 2017-09-15 23:50:50 · 6374 阅读 · 1 评论 -
lock锁和monitor.enter锁
(210-08-05 14:50:28)转载▼Lock(object)锁的使用using System;using System.Threading;namespace program{ class wangjun { public static string buff =转载 2017-09-16 09:39:31 · 1161 阅读 · 0 评论