摘要:
既然有这么多方法可以实现同一个UI,到底应该选择哪一种方式来实现UI呢?实际上,设计师给出的UI布局是软件的一个静态快照(Static Snap),这个静态快照加上用户有可能动态操作才能够构成选择实现布局形式的完整依据,拿上面两段代码来说,如果你希望用户在改变窗体大小后需要等比例缩小自己内部控件的尺寸,那么你选择第二种,如果只希望控件在界面上做一个简单的排列,第一种足矣。XAML是一种声明性语言,XAML会为每一个标签创建一个与之对于的对象,对象创建之后要对它的属性进行必要的初始化之后才有使用意义。因为XAML语言不能够编写程序的运行逻辑,所以一份XAML文档除了使用标签声明对象就是初始化对象 阅读全文
摘要:
Grida. 单元格的宽度可以设置三类值绝对值:double数值加单位后缀比例值:double数值加一个星号*自动值: auto,高度将有内部的控件的高度和宽度决定。StackPanel控件从左向右或者从上向下排列控件,有一个Orientation枚举,还可以使用HorizontalAlignment和VerticalAlignment来进行对齐。Canvas使用横纵坐标绝对点定位,很好理解,使用Canvas.Left, Canvas.Top来定位DockPanelDockPanel使用Dock属性来定位,DockPanel.Dock枚举可取值Left, Top, Right, Bottom四 阅读全文
摘要:
以前曾用 GetWindowsDirectory、GetSystemDirectory、GetTempPath 等函数获取系统常用文件夹;也用过SHGetSpecialFolderLocation、SHGetPathFromIDList函数获取过更多常用路径;但这都不如用 GetEnvironmentVariable 获取系统变量来得快.//譬如 %WINDIR% 是表示系统目录的系统变量, 可以这样获取:var s: string;begin s := GetEnvironmentVariable('WINDIR'); ShowMessage(s); {C:\WINDOWS} 阅读全文
摘要:
where 子句用于指定类型约束,这些约束可以作为泛型声明中定义的类型参数的变量。1.接口约束。例如,可以声明一个泛型类MyGenericClass,这样,类型参数T就可以实现 IComparable 接口:publicclassMyGenericClasswhere T:IComparable { }2.基类约束:指出某个类型必须将指定的类作为基类(或者就是该类本身),才能用作该泛型类型的类型参数。这样的约束一经使用,就必须出现在该类型参数的所有其他约束之前。classMyClassywhere T :classwhere U :struct{}3.where 子句还可以包括构造函数约束。可 阅读全文
摘要:
“Lambda 表达式”是一个匿名函数,它可以包含表达式和语句,并且可用于创建委托或表达式树类型。所有 Lambda 表达式都使用 Lambda 运算符 =>,该运算符读为“goes to”。 该 Lambda 运算符的左边是输入参数(如果有),右边包含表达式或语句块。 Lambda 表达式 x => x * x 读作“x goes to x times x”。=> 运算符具有与赋值运算符 (=) 相同的优先级,并且是右结合运算符。Lambda 在基于方法的 LINQ 查询中用作标准查询运算符方法(如 Where)的参数。在 is 或 as 运算符的左侧不允许使用 Lambd 阅读全文
摘要:
任何需要新建委托(new MyDelegate(……))的地方,一般都能用匿名方法(delegate(参数){……}),也一般能用lambda表达式((参数)=>{函数体})。以下代码显式声明了一个名为 ShowValue 的委托,并将对 Name.DisplayToWindow 实例方法的引用分配给其委托实例。using System;using System.Windows.Forms;public delegate void ShowValue();public class Name{ private string instanceName; public Name(string 阅读全文
摘要:
多线程的相关概念1.进程:是操作系统结构的基础;是一个正在执行的程序;计算机中正在运行的程序实例;可以分配给处理器并由处理器执行的一个实体;由单一顺序的执行显示,一个当前状态和一组相关的系统资源所描述的活动单元。2.线程:线程是程序中一个单一的顺序控制流程。是程序执行流的最小单元。另外,线程是进程中的一个实体,是被系统独立调度和分派的基本单位,线程自己不拥有系统资源,只拥有一点在运行中必不可少的资源,但它可与同属一个进程的其它线程共享进程所拥有的全部资源。一个线程可以创建和撤消另一个线程,同一进程中的多个线程之间可以并发执行。由于线程之间的相互制约,致使线程在运行中呈现出间断性。线程也有就绪、 阅读全文
摘要:
Socket类:Socket 类为网络通信提供了一套丰富的方法和属性。 Socket 类允许您使用 ProtocolType 枚举中所列出的任何一种协议执行异步和同步数据传输。Socket 类对异步方法遵循 .NET Framework 命名模式。 例如,同步的 Receive 方法对应于异步的 BeginReceive 和 EndReceive 方法。如果应用程序在执行期间只需要一个线程,请使用下面的方法,这些方法适用于同步操作模式。如果当前使用的是面向连接的协议(如 TCP),则服务器可以使用 Listen 方法侦听连接。 Accept 方法处理任何传入的连接请求,并返回可用于与远程主机进 阅读全文
摘要:
Socket,端口,Tcp,UDP。 概念1、Socket还被称作“套接字”,应用程序通常通过套接字向网络发送请求或者应答网络请求。根据连接启动的方式以及本地套接字要连接的目标,套接字之间的连接过程可以分为三个步骤:服务器监听,客户端请求,连接确认。2、端口:可以认为是计算机与外界通讯交流的出口。3、Tcp:TCP是一种面向连接(连接导向)的、可靠的、基于字节流的运输层通信协议。UDP是另一个重要的传输协议。4、UDP:用户数据报协议,是一种无连接的传输层协议,提供面向事务的简单不可靠信息传送服务。理解Socket,端口,Tcp,UDP1、ip跟端口的作用:例如,你用QQ跟好友聊天,首先QQ要 阅读全文
摘要:
简而言之,一个程序至少有一个进程,一个进程至少有一个线程.线程的划分尺度小于进程,使得多线程程序的并发性高。另外,进程在执行过程中拥有独立的内存单元,而多个线程共享内存,从而极大地提高了程序的运行效率。线程在执行过程中与进程还是有区别的。每个独立的线程有一个程序运行的入口、顺序执行序列和程序的出口。但是线程不能够独立执行,必须依存在应用程序中,由应用程序提供多个线程执行控制。从逻辑角度来看,多线程的意义在于一个应用程序中,有多个执行部分可以同时执行。但操作系统并没有将多个线程看做多个独立的应用,来实现进程的调度和管理以及资源分配。这就是进程和线程的重要区别。进程是具有一定独立功能的程序关于某个 阅读全文