
WPF/C#学习之路
滴水梵音
程序人生
展开
-
C#Hashtable与Dictionary性能
由于 Hashtable 和 Dictionary 同时存在, 在使用场景上必然存在选择性, 并不任何时刻都能相互替代.[1] 单线程程序中推荐使用 Dictionary, 有泛型优势, 且读取速度较快, 容量利用更充分.[2] 多线程程序中推荐使用 Hashtable, 默认的 Hashtable 允许单线程写入, 多线程读取, 对 Hashtable 进一步调用 Synchronize转载 2015-04-15 10:52:54 · 510 阅读 · 0 评论 -
C# 计算中文汉字笔画数
C# 计算中文汉字笔画数using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Text.RegularExpressions; namespace WindowsFormsApplication1 { publ转载 2013-09-06 10:05:41 · 1878 阅读 · 0 评论 -
委托与事件
一、委托的定义: C#中的委托是一种引用方法的类型,一旦为委托分配了方法,委托将与该方法具有完全相同的行为,委托方法的使用可以像其他任何方法一样具有参数和返回值。委托对象能被传递给调用该方法引用的代码而无须知道哪个方法将在编译时被调用。委托是函数的封装,它代表一“类”函数。他们都符合一定的签名:拥有相同的参数列表、返回值类型。同时委托也可以看作是对函数的抽象,是函数的“类”。此时,转载 2013-08-29 15:18:02 · 701 阅读 · 0 评论 -
C#反射技术学习
一 反射机制的概念 首先了解C#反射的概念,反射是一个运行库类型发现的过程。通过反射可以得到一个给定程序集所包含的所有类型的列表,这个列表包括给定类型中定义的方法、字段、属性和事件。也可以动态的发现一组给定类支持的接口、方法的参数和其他相关信息如基类、命名空间、数据清单等。如下是C#命名空间详细介绍:1、 System.Reflection命名空间内的各类型1) A原创 2013-08-28 15:30:18 · 1007 阅读 · 0 评论 -
System.Type类
System.Type类 System.Type类定义了很多成员,可以用来检查某个类型的元数据,它们返回的类型大多位于System.Reflection命名空间中。举例来说,Type.GetMethods()返回一个MethodInfo类型的数组,Type.GetFields返回一个FieldInfo类型的数组等。System.Type提供的完整的成员组是很容易扩展的。使用S转载 2013-08-29 15:09:46 · 742 阅读 · 0 评论 -
Lambda 表达式
1. Lambda表达式 “Lambda” 表达式”是一个匿名函数,用于创建委托或表达式树类型。 “=>”为Lambda 运算符,读为“goes to”。Lambda 运算符左边是“输入参数”,右边是“表达式或语句块”,如下所示:[csharp] view plaincopyprint?delegate int del(int i); st转载 2013-08-29 15:29:43 · 650 阅读 · 0 评论 -
WPF体系结构
WPF体系结构WPF的基础的体系结构,所引用的Assembly如下图所示:关系图中的PresentationFramework、PresentationCore 和 milcore是 WPF 的主要代码部分。在这些组件中,只有一个是非托管组件 – milcore。milcore 是以非托管代码编写的,目的是实现与 DirectX 的紧密集成。WPF 中的所有显示是通过 Di转载 2013-08-29 13:05:58 · 701 阅读 · 0 评论 -
WPF布局
WPF提供了一套面板,他们是用于排列他们所包含的元素的特殊用户界面元素。 1栈面板(StackPanel) 栈面板就是将其其包含的元素按照堆栈的形式排列,通过设置面板的Orientation属性设置了两种排列方式:默认的横排(Horizontal)和竖排(Vertical)。纵向的StatickPanel默认每个元素宽度与面板一样宽,反之横向亦然。如果包含的元素超过了面板空转载 2013-08-29 13:09:39 · 519 阅读 · 0 评论 -
WPF的静态资源(StaticResource)和动态资源(DynamicResource)
静态资源(StaticResource)和动态资源(DynamicResource)资源可以作为静态资源或动态资源进行引用。这是通过使用 StaticResource 标记扩展或 DynamicResource 标记扩展完成的。 StaticResource 通过替换已定义资源的值来为 XAML 属性提供值。 DynamicResource 通过将值推迟为对资源的运转载 2013-08-29 11:21:58 · 8388 阅读 · 0 评论 -
WPF之XMAL对象引用总结
我们应该都知道,XMAL是一种声明式语言,XMAL的标签声明的就是对象。一个XMAL标签会对应着一个对象,这个对象一般会是一个控件类的实例。在.Net平台上,所有类都是引用类型,我们是通过引用来访问对象实例。当一个对象实例不再被任何引用者引用时,它将自动被GC回收。 在WPF开发过程中,后台代码经常会操作前台XMAL声明的控件对象实例,这就涉及到如何查找这些控件对象的引用原创 2013-08-29 11:16:45 · 2596 阅读 · 0 评论 -
C#异步编程
同步方法和异步方法的区别同步方法调用在程序继续执行之前需要等待同步方法执行完毕返回结果异步方法则在被调用之后立即返回以便程序在被调用方法完成其任务的同时执行其它操作异步编程概览.NET Framework 允许您异步调用任何方法。定义与您需要调用的方法具有相同签名的委托;公共语言运行库将自动为该委托定义具有适当签名的 BeginInvoke 和 EndInvoke 方法。B转载 2013-08-28 13:58:35 · 562 阅读 · 0 评论 -
Attribute在.NET编程的应用(六)
Attribute在.NET编程的应用(六)(承上节) .NET Framework拦截机制的设计中,在客户端和对象之间,存在着多种消息接收器,这些消息接收器组成一个链表,客户端的调用对象的过程以及调用返回实行拦截,你可以定制自己的消息接收器,把它们插入了到链表中,来完成你对一个调用的前处理和后处理。那么调用拦截是如何构架或者说如何实现的呢?在.NET中有两种调用,一种是跨应用转载 2013-08-28 13:51:13 · 518 阅读 · 0 评论 -
Attribute在.NET编程中的应用(五)
Attribute在拦截机制上的应用从这一节开始我们讨论Attribute的高级应用,为此我准备了一个实际的例子:我们有一个订单处理系统,当一份订单提交的时候,系统检查库存,如果库存存量满足订单的数量,系统记录订单处理记录,然后更新库存,如果库存存量低于订单的数量,系统做相应的记录,同时向库存管理员发送邮件。为了方便演示,我们对例子进行了简化://Inventory.csusing S转载 2013-08-28 13:50:39 · 583 阅读 · 0 评论 -
C#事件机制
定义一个事件成员,表示该类型提供了如下功能:1.能够在事件中注册方法 2.能够在事件中注销方法 3.当事件发生时,注册的方法会被通知(事件内部维护了一个注册方法列表)CLR的事件模型是基于委托的,它可以通过类型安全的方式调用回调方法。而回调方法是订阅事件的对象接收通知的方式。通过一个例子来说明:①Fax对象的方法注册到MailManager事件 ②Pager对象的方转载 2013-09-06 15:29:29 · 795 阅读 · 0 评论 -
ObservableCollection 类简介
ObservableCollection 类简介假设您正在创建 Windows 窗体应用程序,并且已将 DataGridView 控件绑定到标准 List(Of Customer) 数据结构。您希望能够使网格中的项目与基础数据源中的值保持同步。也就是说,如果其他代码或其他窗体更改了 List 中用户的数据,您希望网格随之更新并显示修改的数据。通常情况下,使用 Windows 窗体可转载 2013-09-09 11:16:57 · 1822 阅读 · 0 评论 -
数据结构 : Hash Table
引子这篇仍然不讲并行/并发。Hash table,国内相当一部分书籍将其直译为哈希表,但博主本人喜欢称其为散列表。散列表支持任何基于 Key-Value 对的插入,检索,删除操作。比如在 .NET 1.x 版本下,我们可以这样使用: 10 namespace Lucifer.CSharp.Sample 11 { 12转载 2015-04-15 10:52:05 · 517 阅读 · 0 评论 -
C#中StringBuilder用法以及和String的区别分析
当我们在初学使用C#时,常常会不知道该用StringBuilder合适还是用String高效,下面是我在学习当中对StringBuilder和String的区别总结,分享给大家。String类有不可改变性。每次执行字符操作时,都会创建一个新的String对象。StringBuilder 类解决了对字符串进行重复修改的过程中创建大量对象的问题。初始化一个StringBuilder 之后,转载 2015-04-14 09:39:31 · 542 阅读 · 0 评论 -
C# explicti和implicit详解
C#语言有很多值得学习的地方,这里我们主要介绍C# explicti和implicit,包括介绍隐式转换可以让我们的代码看上去更漂亮、更简洁易懂等方面。 C# explicti和implicit的含义 ◆C# explicti和implicit属于转换运算符,如用这两者可以让我们自定义的类型支持相互交换 ◆explicti表示显式转换,如从 A -> B 必须进行强制转载 2013-09-25 10:15:46 · 559 阅读 · 0 评论 -
C#命名规范
C#命名规范 数据类型数据类型简写标准命名举例Array arr arrShoppingList Boolean bln blnIsPostBackByt转载 2013-09-23 17:50:52 · 743 阅读 · 0 评论 -
C#中const和readonly的区别
C#中const和readonly的区别C#引入了readonly修饰符来表示只读域,const来表示不变常量。顾名思义对只读域不能进行写操作,不变常量不能被修改,这两者到底有什么区别呢?只读域只能在初始化--声明初始化或构造器初始化--的过程中赋值,其他地方不能进行对只读域的赋值操作,否则编译器会报错。只读域可以是实例域也可以是静态域。只读域的类型可以是C#语言的任何类型转载 2013-09-18 15:43:39 · 522 阅读 · 0 评论 -
使用SharpZipLib实现zip压缩
使用SharpZipLib实现zip压缩使用国外开源加压解压库ICSharpCode.SharpZipLib实现加压,该库的官方网站为http://www.icsharpcode.net/OpenSource/SharpZipLib/Download.aspx使用体验:可以照着例子实现简单的加压解压,可以加压一个文件夹中的所有文件,但没有提供加压子文件夹的说明。目前转载 2013-09-05 15:18:25 · 591 阅读 · 0 评论 -
WPF前世今生
WPF 基础系列2—WPF前世今生1.开篇前言 很多时分了解一项新技术的汗青和趋势经常比这项技术的自身价值还要首要。WPF作为一项新技术(曾经三年多了,或者应该叫老技术了),大家都有需要了解它 的前因后果,特殊是公司的CTO、技术总监、架构师等决策层,因为他们对技术的选型及应器具有抉择权。关于开辟者来说,了解自己正在从事的这个技术的前世 此生,有助于大家更好的转载 2013-09-05 14:29:18 · 1336 阅读 · 0 评论 -
依赖属性(DependencyProperty)
一站式WPF--依赖属性(DependencyProperty)一Windows Presentation Foundation (WPF) 提供了一组服务,这些服务可用于扩展公共语言运行时 (CLR) 属性的功能,这些服务通常统称为 WPF 属性系统。由 WPF 属性系统支持的属性称为依赖项属性。 这段是MSDN上对依赖属性(DependencyProper转载 2013-09-05 14:27:09 · 910 阅读 · 0 评论 -
MVVM框架介绍
1,到底有哪些开源MVVM框架? 前面介绍了WPF的基本概念和一些相关知识,我们了解到开发WPF应用程序可以使用现成的框架和模式,最为合适的莫过于时下正热的MVVM模式,所以这里我们也列出针对MVVM模式的已有开源框架: 图3 上面除了WPFToolKit转载 2013-09-05 14:25:14 · 10217 阅读 · 0 评论 -
WPF数据绑定详解
Windows Presentation Foundation (WPF) 数据绑定为应用程序提供了一种简单而一致的方法来显示数据以及与数据交互。元素可以以公共语言运行库 (CLR) 对象和 XML 的形式绑定到各种数据源的数据。ContentControl(如 Button)和 ItemsControl(如 ListBox 和 ListView)具有内置功能,使单个数据项或数据项集合可以进行灵活转载 2013-09-10 10:54:56 · 1554 阅读 · 0 评论 -
MVVM、MVVMLight、MVVMLight Toolkit之我见
MVVM、MVVMLight、MVVMLight Toolkit之我见我想,现在已经有不少朋友在项目中使用了MVVMLight了吧,如果你正在做WPF,Silverlight,Windows Phone的开发,那么,你有十分必要的理由了解MVVM和MVVMLight。我写这篇文章的目的,是给大家做一个总结,以便更多的朋友了解并掌握MVVM。 首先,要说一下MVVM的概念。MVV转载 2013-09-09 17:00:01 · 744 阅读 · 1 评论 -
MVVM、MVVMLight、MVVMLight Toolkit之我见
MVVM、MVVMLight、MVVMLight Toolkit之我见我想,现在已经有不少朋友在项目中使用了MVVMLight了吧,如果你正在做WPF,Silverlight,Windows Phone的开发,那么,你有十分必要的理由了解MVVM和MVVMLight。我写这篇文章的目的,是给大家做一个总结,以便更多的朋友了解并掌握MVVM。 首先,要说一下MVVM的概念。MVV转载 2013-09-09 16:58:43 · 806 阅读 · 0 评论 -
Attribute在.NET编程中的应用(四)
SqlCommandGenerator类的设计 SqlCommandGEnerator类的设计思路就是通过反射得到方法的参数,使用被SqlCommandParameterAttribute标记的参数来装配一个Command实例。引用的命名空间://SqlCommandGenerator.csusing System;using System.Reflection;u转载 2013-08-28 13:50:03 · 600 阅读 · 0 评论 -
Attribute在.NET编程中的应用(三)
Attribute在.NET编程中的应用(三)用于参数的Attribute在编写多层应用程序的时候,你是否为每次要写大量类似的数据访问代码而感到枯燥无味?比如我们需要编写调用存储过程的代码,或者编写T_SQL代码,这些代码往往需要传递各种参数,有的参数个数比较多,一不小心还容易写错。有没有一种一劳永逸的方法?当然,你可以使用MS的Data Access Application转载 2013-08-28 13:49:01 · 546 阅读 · 0 评论 -
string用法
一、标记标记(tokenizing)是从文本中提取具体内容的过程。下面的代码从句子中提取单词,并把它们输出到控制台。class mytokenizing { static void main(string[ ] args) { string mystring="i like this food,are you?"; char[] separators={转载 2013-07-16 11:26:09 · 795 阅读 · 0 评论 -
XmlTextReader方法和属性一览
创建 打开 XmlTextReader reader = new XmlTextReader("*.xml"); 关闭 reader.Close();属性 常用 HasAttributes 获取一个值,该值指示当前节点是否有任何属性。(从 XmlReader 继承。)转载 2013-07-04 16:46:29 · 2231 阅读 · 0 评论 -
ArrayList的使用方法
1、什么是ArrayList ArrayList就是传说中的动态数组,用MSDN中的说法,就是Array的复杂版本,它提供了如下一些好处:动态的增加和减少元素 实现了ICollection和IList接口 灵活的设置数组的大小2、如何使用ArrayList 最简单的例子:ArrayList List = new ArrayList();for( int转载 2013-07-16 09:56:34 · 500 阅读 · 0 评论 -
如何知道自己的CPU支持SLAT
因为WP8 SDK发布,很多WP8的开发者们也开始陆续安装WP8的SDK的,然而安装WP8的SDK有很多软件和硬件的要求,其中有一个就是——要求CPU支持二级地址转换(SLAT),如果CPU不支持二级地址转换的话,在电脑上就不能运行Windows Phone的模拟器来测试自己开发的程序了,对于二级地址的转换到底是什么意思,我在这里就不解释了,大家可以通过网上查下具体的含义,这里就介绍下如何知道自己转载 2013-06-25 09:23:27 · 952 阅读 · 0 评论 -
XmlTextWriter学习总结
原本想基于XmlDocument自己写一个Xml编写器,但却发觉状态维护实在麻烦。在阅读《Applied Xml Programming for Microsoft .Net》时,意外发现XmlTextWriter的优越性,于是决定直接使用它进行开发。XmlWriter与XmlTextWriter的区别 一开始我认为既然XmlTextWriter可以用,那XmlWriter也一定可转载 2013-07-08 21:40:16 · 611 阅读 · 0 评论 -
C# 中 Struct 与 Class 的区别
先说区别,原文出处 http://www.dotnetspider.com/resources/740-Difference-between-class-struct-C.aspx1,class 是引用类型,structs是值类型既然class是引用类型,class可以设为null。但是我们不能将struct设为null,因为它是值类型。 struct AStruct翻译 2013-07-08 16:23:29 · 488 阅读 · 0 评论 -
IDisposable 在C#中的作用
IDisposable 在C#中的作用首先来看MSDN中关于这个接口的说明:[ComVisible(true)]public interface IDisposable{ // Methods void Dispose();}1.[ComVisible(true)]: 指示该托管类型对 COM 是可见的.2.此接口的主要用途是转载 2013-07-08 15:56:56 · 635 阅读 · 0 评论 -
c#读写XML文件
一.前言: XML是微软.Net战略的一个重要组成部分,而且它可谓是XML Web服务的基石,所以掌握.Net框架下的XML技术自然显得非常重要了。本文将指导大家如何运用C#语言完成.Net框架下的XML文档的读写操作。首先,我会向大家介绍.Net框架中与XML相关的命名空间和其中的重要类。其次,我还会给出有关的实例以使读者更进一步的了解XML文档的读写操作的具体方法。二.XML命名空转载 2013-06-21 10:56:45 · 549 阅读 · 0 评论 -
在Visual C#中使用XML指南之读取XML
对于XML,想必各位都比较了解,我也就不用费笔墨来描述它是什么了,我想在未来的Web开发中XML一定会大放异彩,XML是可扩展标记语言,使用它企业可以制定一套自己的数据格式,数据按照这种格式在网络中传输然后再通过XSLT将数据转换成用户期望的样子表示出来,这样便轻易的解决了数据格式不兼容的问题。用于Internet的数据传输,我想,这是XML对于我们这些程序员最诱人的地方! 我们今天的转载 2013-07-08 15:06:48 · 601 阅读 · 0 评论 -
C# 特性详解
C# 特性详解 特性(attribute)是被指定给某一声明的一则附加的声明性信息。 在C#中,有一个小的预定义特性集合。在学习如何建立我们自己的定制特性(custom attributes)之前,我们先来看看在我们的代码中如何使用预定义特性。 1 using System; 2 public class AnyClass 3 { 4转载 2013-06-19 16:21:06 · 468 阅读 · 0 评论 -
C# using 三种使用方式
C# using 三种使用方式1.using指令。using + 命名空间名字,这样可以在程序中直接用命令空间中的类型,而不必指定类型的详细命名空间,类似于Java的import,这个功能也是最常用的,几乎每个cs的程序都会用到。例如:using System; 一般都会出现在*.cs中。2.using别名。using + 别名 = 包括详细命名空间信息的具体的类型转载 2013-06-17 13:40:51 · 595 阅读 · 0 评论