
c#学习日志
cbbbc
这个作者很懒,什么都没留下…
展开
-
C# 访问修饰符internal的访问范围误区释疑
一、前言 MSDN关于访问修饰符的访问级别解释:访问修饰符是一些关键字,用于指定声明的成员或类型的可访问性。本节介绍四个访问修饰符:publicprotectedinternalprivate使用这些访问修饰符可指定下列五个可访问性级别:转载 2017-05-28 12:50:05 · 541 阅读 · 0 评论 -
C#中打印出当前堆栈
使用C#过程中,除了通过try catch中的exception来打印当前的堆栈信息,我们还可以主动通过System.DiagnosticsStackTrace这个类来主动打印出堆栈信息。 代码:using System;using System.Diagnostics;namespace Test2{ class Program {原创 2016-03-21 17:34:15 · 15654 阅读 · 0 评论 -
浅析 c# Queue
1、Queue定义System.Collections.Queue类表示对象的先进先出集合,存储在 Queue(队列) 中的对象在一端插入,从另一端移除。 2、优点1、能对集合进行顺序处理(先进先出)。2、能接受null值,并且允许重复的元素。 3、 Queue的构造器构造器函数注释Queue ()初始化转载 2016-03-30 10:50:54 · 482 阅读 · 0 评论 -
C#模拟Http与Https请求框架类实例
本文实例讲述了C#模拟Http与Https请求框架类。分享给大家供大家参考。具体实现方法如下:using System.Text;using System.Net;using System.IO;using System.Text.RegularExpressions;using System.Security.Cryptography.X509Certificates;us转载 2016-01-29 16:02:51 · 1267 阅读 · 0 评论 -
C#中HttpWebRequest的用法详解
本文实例讲述了C#中HttpWebRequest的用法。分享给大家供大家参考。具体如下:HttpWebRequest类主要利用HTTP 协议和服务器交互,通常是通过 GET 和 POST 两种方式来对数据进行获取和提交。下面对这两种方式进行一下说明:GET 方式:GET 方式通过在网络地址附加参数来完成数据的提交,比如在地址 http://www.jb51.net/?hl=zh-CN转载 2016-01-29 15:58:50 · 698 阅读 · 0 评论 -
C#写入和读出文本文件
写入文本文件 class WriteTextFile { static void Main() { //如果文件不存在,则创建;存在则覆盖 //该方法写入字符数组换行显示 string[] lines = { "first line", "second line", "third l转载 2016-01-29 15:54:36 · 536 阅读 · 0 评论 -
C#,往线程里传参数的方法总结
Thread (ParameterizedThreadStart) 初始化 Thread 类的新实例,指定允许对象在线程启动时传递给线程的委托。 Thread (ThreadStart) 初始化 Thread 类的新实例。 由 .NET Compact Framework 支持。 Thread (ParameterizedThreadStart, Int32) 初始化 Thre转载 2016-01-29 15:50:17 · 402 阅读 · 0 评论 -
结构及其使用 struct (C#)
结构及其使用 struct (C#)首先结构是值类型。结构是使用 struct 关键字定义的,结构如下:struct 结构名{}结构概述 结构具有以下特点:结构是值类型,而类是引用类型。 (结构不能包含显式的无参数构造函数)与类不同,结构的实例化可以不使用 new 运算符。结构可以声明构造函数,但它们必须带参数。一个结构不能从另一转载 2016-01-29 15:45:14 · 629 阅读 · 0 评论 -
c#中判断对象为空的几种方式(字符串等)
(1)先了解几个与空类型相关的关键字和对象 Null : 关键字表示不引用任何对象的空引用,它是所有引用类型变量的默认值,在2.0版本之前也就只有引用变量类型可以为null,如(string a=null)但在c# 2.0版本之后,Net也引入了可以为Null的值类型,但变量在定义的时候方式有所不同,如:int ? a=null。详细看http://msdn.microsoft.com/zh转载 2016-01-29 15:41:12 · 8891 阅读 · 1 评论 -
C#中sealed关键字
1. sealed关键字 当对一个类应用 sealed 修饰符时,此修饰符会阻止其他类从该类继承。类似于Java中final关键字。 在下面的示例中,类 B 从类 A 继承,但是任何类都不能从类 B 继承。2. sealed 修饰方法或属性 能够允许类从基类继承,并防止它们重写特定的虚方法或虚属性。 1)sealed是对虚方法或虚属性,也就是同overr转载 2015-12-09 19:13:51 · 619 阅读 · 0 评论 -
C#中yield return用法分析
本文实例讲述了C#中yield return用法,并且对比了使用yield return与不使用yield return的情况,以便读者更好的进行理解。具体如下:yield关键字用于遍历循环中,yield return用于返回IEnumerable,yield break用于终止循环遍历。有这样的一个int类型的集合:static List GetInitialData()转载 2015-12-09 10:36:42 · 3317 阅读 · 0 评论 -
C# 关键字extern用法
修饰符用于声明在外部实现的方法。extern 修饰符的常见用法是在使用 Interop 服务调入非托管代码时与 DllImport 属性一起使用;在这种情况下,该方法还必须声明为 static,如下面的示例所示:[DllImport("avifil32.dll")]private static extern void AVIFileInit();注意 extern 关键字还转载 2015-12-08 17:53:23 · 473 阅读 · 0 评论 -
C++通过DLL调用C#代码
本文将介绍C++中通过DLL来调用C#代码。首先建立C#的“类库”工程CShapeDLL。然后输入如下代码://C++通过DLL调用C#代码 //http://blog.youkuaiyun.com/morewindows/article/details/8678431 //By MoreWindows( http://blog.youkuaiyun.com/MoreWindows ) usi转载 2015-12-08 17:39:45 · 545 阅读 · 0 评论 -
C#判断上传文件是否是图片,防止木马上传
方法一:用image对象判断是否为图片 /// 判断文件是否为图片 /// /// 文件的完整路径 /// 返回结果 public Boolean IsImage(string path) { try { System.Drawing.Image img = System.D转载 2016-02-29 16:54:46 · 4355 阅读 · 0 评论 -
C#通过托管调用Win32 api获取键盘状态
代码如下:using System;using System.Windows.Forms;using System.Runtime.InteropServices;namespace MouseKeyboardStateTest{ public abstract class Keyboard { [Flags] private enum KeyStates转载 2016-04-26 16:00:27 · 2373 阅读 · 0 评论 -
释放Activator.CreateInstance创建的对象
调用Dispose接口IDisposable disp = obj as IDisposable;disp.Dispose();原创 2016-11-22 15:29:31 · 2396 阅读 · 0 评论 -
C# Activator和new的区别
基于接口的Remoting对象是不能用new来创建的,可以直接使用Activator来创建转载 2016-11-22 15:27:39 · 4782 阅读 · 0 评论 -
C#中Activator.CreateInstance()方法用法分析
本文实例讲述了C#中Activator.CreateInstance()方法用法。分享给大家供大家参考。具体分析如下:Activator 类包含特定的方法,用以在本地或从远程创建对象类型,或获取对现有远程对象的引用。C#在类工厂中动态创建类的实例,所使用的方法为:1. Activator.CreateInstance (Type)2. Activator.CreateInsta转载 2016-11-22 15:21:09 · 8122 阅读 · 0 评论 -
C#性能优化总结
1. C#语言方面 1.1 垃圾回收 垃圾回收解放了手工管理对象的工作,提高了程序的健壮性,但副作用就是程序代码可能对于对象创建变得随意。 1.1.1 避免不必要的对象创建 由于垃圾回收的代价较高,所以C#程序开发要遵循的一个基本原则就是避免不必要的对象创建。以下列举一些常见的情形。 1.1.1.1 避免循环创建对象 ★ 如果对象并不会随每次循环而改变状态,那么在循环中转载 2016-11-22 15:17:22 · 657 阅读 · 0 评论 -
C# Dictionary通过value获取对应的key值
1:最直白的循环遍历方法,可以分为遍历key--value键值对以及所有的key两种表现形式2:用Linq的方式去查询(当然了这里要添加对应的命名空间 using System.Linq) 如下为一个十分简单的代码示例: private void GetDicKeyByValue() { Dictionary dic = new D转载 2016-11-30 20:12:00 · 8021 阅读 · 0 评论 -
C#中关于@的用法
之前一直没有见过@出现在C#语句的字符串前的用法,这次去德瑞的面试题中第一次见到这种格式的,一下子没反应过来,然后回来找了些资料,才知道原来@在带转义字符的字符串前面可以消除转移字符的作用,所以今天虽然题做错了,但也算是成长了。(以下内容摘自博客园)C#中@的用法1. 加在字符串前面,字符串中的 \ 失去转义符的作用,直接写字符串而不需要考虑转义字符 string path =转载 2016-11-30 16:08:29 · 311 阅读 · 0 评论 -
C# Enum,Int,String的互相转换
C# Enum,Int,String的互相转换 Enum为枚举提供基类,其基础类型可以是除 Char 外的任何整型。如果没有显式声明基础类型,则使用 Int32。编程语言通常提供语法来声明由一组已命名的常数和它们的值组成的枚举。 注意:枚举类型的基类型是除 Char 外的任何整型,所以枚举类型的值是整型值。 Enum 提供一些实用的静态方法: (1)比较枚举转载 2016-09-22 14:45:30 · 342 阅读 · 0 评论 -
C# 程序员最常犯的 10 个错误
关于C#C#是达成微软公共语言运行库(CLR)的少数语言中的一种。达成CLR的语言可以受益于其带来的特性,如跨语言集成、异常处理、安全性增强、部件组合的简易模型以及调试和分析服务。作为现代的CLR语言,C#是应用最为广泛的,其应用场景针对Windows桌面、移动手机以及服务器环境等复杂、专业的开发项目。C#是种面向对象的强类型语言。C#在编译和运行时都有的强类型检查,使在大多数典型的编转载 2016-09-02 20:30:16 · 2191 阅读 · 0 评论 -
一个Marshal.Copy的问题
首先介绍下这个问题的背景,是来自很久前一个同事问我请教的问题,当时我也没搞清楚,还去88上问了下。现在我有些空余时间,在88上有看到了自己的提问,想想有必要研究清楚这个问题到底是怎么回事。 其次我要对中文MSDN的文档表达以下不满,正是由于MSDN的中文文档对这个函数的介绍的语义比较模糊,不精确,才导致我当时无法理解清楚这个函数的设计用意和用途是什么。 第三,我要顺便鄙视下.n转载 2016-08-23 16:54:36 · 6708 阅读 · 0 评论 -
c#中Marshal.Copy()方法的使用
c#中Marshal.Copy方法的使用Marshal.copy()方法用来在托管对象(数组)和非托管对象(IntPtr)之间进行内容的复制函数有很多重载,如下所示:Copy(array[]()[], Int32, IntPtr, Int32) 将一维的托管 8 位无符号整数数组中的数据复制到非托管内存指针。Copy(array[]()[], Int32, IntPtr, Int3转载 2016-08-23 16:48:05 · 23682 阅读 · 0 评论 -
Marshal类
Marshal类支持从托管内存空间复制数据到非托管内存空间,或是从非托管内存空间到托管内存空间。如果你研究在线的MSDN文档库,你会看到在桌面.NET框架下这个类支持的分配非托管内存空间的方法和其他的一些与COM对象共同工作的方法。没有任何内存空间管理和COM支持方法在.NET精简框架的Marshal实现中出现。表4.5总结了Marshal类的被.NET精简框架支持的成员:13方法名(有一个或多个转载 2016-08-23 16:46:45 · 1868 阅读 · 0 评论 -
Dictionary通过下标获取key和value
Dictionary dic = new Dictionary(); Dictionary.Enumerator en = dic.GetEnumerator(); for (int i = 0; i < dic.Count; i++) { if (en.MoveNext())转载 2016-08-31 20:34:07 · 11869 阅读 · 0 评论 -
C++通过DLL调用C#代码
本文将介绍C++中通过DLL来调用C#代码。首先建立C#的“类库”工程CShapeDLL。然后输入如下代码: //C++通过DLL调用C#代码 //http://blog.youkuaiyun.com/morewindows/article/details/8678431 //By MoreWindows( http://blog.youkuaiyun.com/MoreWindo转载 2015-12-08 17:37:10 · 375 阅读 · 0 评论 -
C# TimeSpan 计算时间差(时间间隔)
TimeSpan 结构 表示一个时间间隔。命名空间:System 程序集:mscorlib(在 mscorlib.dll 中)说明: 1.DateTime值类型代表了一个从公元0001年1月1日0点0分0秒到公元9999年12月31日23点59分59秒之间的具体日期时刻。因此,你可以用DateTime值类型来描述任何在想象范围之内的时间。TimeSpan值包含了许多属性与方法,用于访问或转载 2015-12-08 15:41:27 · 3908 阅读 · 0 评论 -
深入浅出Attribute (上)——Attribute初体验
小序: 注意:本次小序颇长而且没什么正事儿,建议大家直接跳到正文,以免浪费宝贵时间:) 积水潭桥旁的物美大卖场有两层——B1和B2。B1卖电器和日用品(概括起来说就是那些不能吃的——猫粮除外),B2是卖食品的,又分为两个区,南区是卖零食的,北区是卖蔬菜水果生肉熟肉的。以前转的最多的是南区,购物车里大包小包一堆零食还要再抱上两大桶可乐,衣着整洁的时候偶尔还转载 2015-10-27 21:33:10 · 889 阅读 · 0 评论 -
C#中typeof 与GetType()的区别
本文导读:C#中任何对象都具有GetType()方法,它的作用和typeof()相同,返回Type类型的当前对象的类型。typeof(x)中的x,必须是具体的类名、类型名称等,不可以是变量名称;GetType()是基类System.Object的方法,因此只有建立一个实例之后才能够被调用typeof是运算符,获得某一类型的System.Type对象;GetType是方法,获取当前实例的类型.转载 2015-10-27 21:30:45 · 1254 阅读 · 0 评论 -
C#中使用#region指令的一些想法
这篇文章我将不会去介绍如何使用#region指令。因为每个C#开发人员都应该见过和使用过#region指令的。这篇文章将讨论如何在代码中正确的使用它。使用#region就是将一些有关联的代码组织在一起,然后折叠起来。这样你就在一个函数中看不到很长的令人头痛的代码段。例如:public void DoSomething(){ bool shouldIDoSomething; #re转载 2015-11-09 15:18:03 · 569 阅读 · 0 评论 -
Attribute在.net编程中的应用(二)
.NET Framework中对Attribute的支持是一个全新的功能,这种支持来自它的Attribute类。在你的程序中适当地使用这个类,或者是灵活巧妙地利用这个类,将使你的程序获得某种在以往编程中很难做到的能力。我们来看一个例子:假如你是一个项目开发小组中的成员,你想要跟踪项目代码检查的信息,通常你可以把代码的检查信息保存在数据库中以便查询;或者把信息写到代码的注释里面,这样可以阅读代码的同转载 2015-11-06 20:51:50 · 292 阅读 · 0 评论 -
Attribute在.net编程中的应用(三)
用于参数的Attribute在编写多层应用程序的时候,你是否为每次要写大量类似的数据访问代码而感到枯燥无味?比如我们需要编写调用存储过程的代码,或者编写T_SQL代码,这些代码往往需要传递各种参数,有的参数个数比较多,一不小心还容易写错。有没有一种一劳永逸的方法?当然,你可以使用MS的Data Access Application Block,也可以使用自己编写的Block。这里向你提供一种另转载 2015-11-06 20:55:38 · 292 阅读 · 0 评论 -
Remoting基本原理及其扩展机制(中)
在上一篇文章我们已经介绍到通过在配置文件中指定自定义的ChannelSinkProvider,我们可以在Pipeline中加入自己的ChannelSink,此时我们就可以加入自己的信息处理模块,但是这里我们所能操作的对象是已经经过格式化的消息(即数据流),我们看不到原始的消息对象,这也势必影响了我们所能实现的扩展功能。而在上文的图1中,我们看到除了ChannelSink可以扩展之外,我们还可以加入转载 2015-11-06 21:15:38 · 460 阅读 · 0 评论 -
浅析C#中的Attribute
最近用到了,所以静下心来找些资料看了一下,终于把这东西搞清楚了。一.什么是Attribute先看下面的三段代码:1.自定义Attribute类:VersionAttribute [AttributeUsage(AttributeTargets.Class)] public class VersionAttribute : Attribute {转载 2015-11-06 20:32:43 · 507 阅读 · 0 评论 -
Attribute在.net编程中的应用(一)
Attribute的基本概念经常有朋友问,Attribute是什么?它有什么用?好像没有这个东东程序也能运行。实际上在.Net中,Attribute是一个非常重要的组成部分,为了帮助大家理解和掌握Attribute,以及它的使用方法,特地收集了几个Attribute使用的例子,提供给大家参考。在具体的演示之前,我想先大致介绍一下Attribute。我们知道在类的成员中有property成员转载 2015-11-06 20:48:16 · 304 阅读 · 0 评论 -
你必须知道的.NET之特性和属性
1. 引言attribute是.NET框架引入的有一技术亮点,因此我们有必要花点时间走进一个发现attribute登堂入室的入口。因为.NET Framework中使用了大量的定制特性来完成代码约定,[Serializable]、[Flags]、[DllImport]、[AttributeUsage]这些的构造,相信我们都见过吧,那么你是否了解其背后的技术。提起特性,由于高级语言发展的历史转载 2015-11-06 20:38:30 · 816 阅读 · 0 评论 -
Attribute在.net编程中的应用(四)
SqlCommandGenerator类的设计 SqlCommandGEnerator类的设计思路就是通过反射得到方法的参数,使用被SqlCommandParameterAttribute标记的参数来装配一个Command实例。引用的命名空间://SqlCommandGenerator.csusing System;using System.Reflection;usi转载 2015-11-06 20:57:17 · 384 阅读 · 0 评论 -
Remoting基本原理及其扩展机制(上)
.NET Remoting是.NET平台上允许存在于不同应用程序域中的对象相互知晓对方并进行通讯的基础设施。调用对象被称为客户端,而被调用对象则被称为服务器或者服务器对象。简而言之,它就是.NET平台上实现分布式对象系统的框架。传统的方法调用是通过栈实现,调用方法前将this指针以及方法参数压入线程栈中,线程执行方法时将栈中的参数取出作为本地变量,经过一番计算后,将方法的返回结果压入栈中。这样转载 2015-11-06 21:11:01 · 938 阅读 · 0 评论