在.NET客户端程序中应用多线程

程序|多线程|客户端

目录

类与结构的实例比较

类与结构的差别

如何选择结构还是类

一.类与结构的示例比较:

结构示例:

public struct Person

{

string Name;

int height;

int weight

public bool overWeight()

{

//implement something

}

}

类示例:

public class TestTime

{

int hours;

int minutes;

int seconds;

public void passtime()

{

//implementation of behavior

}

}

调用过程:

public class Test

{

public static ovid Main

{

Person Myperson=new Person //声明结构

TestTime Mytime=New TestTime //声明类

}

}

从上面的例子中我们可以看到,类的声明和结构的声明非常类似,只是限定符后面是 struct 还是 class 的区别,而且使用时,定义新的结构和定义新的类的方法也非常类似。那么类和结构的具体区别是什么呢?

二 .类与结构的差别

1. 值类型与引用类型

结构是值类型:值类型在堆栈上分配地址,所有的基类型都是结构类型,例如:int 对应System.int32 结构,string 对应 system.string 结构 ,通过使用结构可以创建更多的值类型

类是引用类型:引用类型在堆上分配地址

堆栈的执行效率要比堆的执行效率高,可是堆栈的资源有限,不适合处理大的逻辑复杂的对象。所以结构处理作为基类型对待的小对象,而类处理某个商业逻辑

因为结构是值类型所以结构之间的赋值可以创建新的结构,而类是引用类型,类之间的赋值只是复制引用

注:

1.虽然结构与类的类型不一样,可是他们的基类型都是对象(object),c#中所有类型的基类型都是object

2.虽然结构的初始化也使用了New 操作符可是结构对象依然分配在堆栈上而不是堆上,如果不使用“新建”(new),那么在初始化所有字段之前,字段将保持未赋值状态,且对象不可用

2.继承性

结构:不能从另外一个结构或者类继承,本身也不能被继承,虽然结构没有明确的用sealed声明,可是结构是隐式的sealed .

类:完全可扩展的,除非显示的声明sealed 否则类可以继承其他类和接口,自身也能被继承

注:虽然结构不能被继承 可是结构能够继承接口,方法和类继承接口一样

例如:结构实现接口

interface IImage
{
void Paint();
}

struct Picture : IImage
{
public void Paint()
{
// painting code goes here
}
private int x, y, z; // other struct members
}

3.内部结构:

结构:

没有默认的构造函数,但是可以添加构造函数

没有析构函数

没有 abstract 和 sealed(因为不能继承)

不能有protected 修饰符

可以不使用new 初始化

在结构中初始化实例字段是错误的

类:

有默认的构造函数

有析构函数

可以使用 abstract 和 sealed

有protected 修饰符

必须使用new 初始化

三.如何选择结构还是类

讨论了结构与类的相同之处和差别之后,下面讨论如何选择使用结构还是类:

1. 堆栈的空间有限,对于大量的逻辑的对象,创建类要比创建结构好一些

2. 结构表示如点、矩形和颜色这样的轻量对象,例如,如果声明一个含有 1000 个点对象的数组,则将为引用每个对象分配附加的内存。在此情况下,结构的成本较低。

3. 在表现抽象和多级别的对象层次时,类是最好的选择

4. 大多数情况下该类型只是一些数据时,结构时最佳的选择

时间: 2024-12-30 12:12:54

在.NET客户端程序中应用多线程的相关文章

在.NET客户端程序中使用多线程

通常认为在编写程序中用到多线程是一个高级的编程任务,容易发生错误.在本月的栏目中,我将在一个Windows窗体应用程序中使用多线程,它具有实际的意义,同时尽量使事情简单.我的目标是在一个普通的需求描述中用最好的办法讲解多线程:客户仍然比较喜欢使用户交互方式的应用程序. 多线程通常和服务器端软件,可扩展性及性能技术联系在一起. 然而,在微软.NET框架中,许多服务器端应用程序都驻留在ASP.NET体系结构中.同样,这些应用程序在逻辑上是单线程的, 因为IIS和ASP.NET在ASP.NET Web

Java 程序中的多线程

程序|多线程 在Java程序中使用多线程要比在 C 或 C++ 中容易得多,这是因为 Java 编程语言提供了语言级的支持.本文通过简单的编程示例来说明 Java 程序中的多线程是多么直观.读完本文以后,用户应该能够编写简单的多线程程序. 为什么会排队等待? 下面的这个简单的 Java 程序完成四项不相关的任务.这样的程序有单个控制线程,控制在这四个任务之间线性地移动.此外,因为所需的资源 - 打印机.磁盘.数据库和显示屏 -- 由于硬件和软件的限制都有内在的潜伏时间,所以每项任务都包含

Eclipse客户端程序中多线程的使用

简介:本文分析了Eclipse中多线程程序的实现,讨论了在Eclipse客户端程序开发中应用多线程的方 法和要注意的问题,同时也讨论了多线程程序的一些调试和问题解决的方法. Eclipse作为一个开发平台,使用越来越广泛,基于Eclipse Rich Client Platform开发的客户端程序 也越来越多.在当今越来越复杂的应用环境中,我们的客户端程序不可避免的要同时进行多任务的处理. 一个优异的客户端程序都会允许用户同时启动多个任务,从而大大提高用户的工作效率以及用户体验.本 文中我们来谈

如客户端程序中自定义的bindatatable类,是datatable的扩展类),脚本编译失败

问题描述 应用系统开发环境:client/server模式VisualStudio2010,.netframework4.0语言c#应用了Remoting,WCF技术.数据库:mssqlserver性能测试工具:Loadrunner12,选择.net协议录制,录制选项中的filter选择新建filter(基于remoting.WCF等四项基本filter,附加客户端程序的DLL).使用loadrunner12录制应用系统的客户端软件,录制脚本中提示某些类未找到(.注释一些编译不通过的脚本,编译通

批处理程序中的“多线程”处理代码_DOS/BAT

如下内容将简单举例,在WINDOWS下使用批处理做多进程并发,以达到"多线程"的效果. 例:需要PING 192.168.0.1到192.168.0.254的所有IP地址,并将是否能PING通的结果输出到log.txt 实现如下: rem 主程序.bat,只需一行代码,调用checkip.bat,经测试,CPU2.6G MEM1G可并发40个左右的进程 复制代码 代码如下: for /l %%i in (1,1,254) do (start /min cmd /c checkip.ba

Tcp多线程服务器和客户端程序

//服务器程序: #include <stdio.h> #include <stdlib.h> #include <string.h> #include <arpa/inet.h> #include <sys/types.h> #include <sys/socket.h> #include <unistd.h> #define PORT 8082 #define BUFSIZE 512 char buf[BUFSIZE+

两个独立的winform程序中,如何传递form窗体界面?

问题描述 就是在客户端Winform程序中的一个form窗体,需要在Server端Winform程序中完整的展现出来,目前想到了两种方式:第一种方式:将客户端程序中的form窗体做截图,直接传递到B程序.这样做传输量太大,再者有滚动条的界面展示不出来,不好用:第二种方式:将客户端程序Form窗体中的所有控件属性(大小,位置,值等等)当作参数,传递到Server端程序,在Server端程序中重新构建界面:这样需要传递的各种元素太多,比较麻烦.请教各位高手,还有没有其他比较好的方法么? 解决方案 解

VB.NET中的多线程开发

多线程 引言 对于使用VB6的开发者而言,要在程序中实现多线程(multi-thread)功能,一般就是使用Win32 API调用.但凡是进行过这种尝试的开发者都会感觉到实现过程非常困难,而且总是会发生些null terminated strings GPF的错误.可是有了VB.NET,一切烦恼都成为过去. 自由线程(free threaded) 在VB6中,我们只能对组件设置多线程模式,这通常就是单元模式的多线程.对于单元线程组件而言,组件中的每个可执行方法都将在一个和组件相联系的线程上运行.

DotNetNuke Skinning Whitepaper(术语与win客户端程序部分)

翻译:术语 术语 "Skinning(皮肤)"是一个很难用语言解释清楚的东西,简单的说,一种皮肤体系提供给你一个静态的布局,但允许你修改颜色和样式甚至可以用你的图片代替原有的图片,另外一种皮肤体系则拥有允许你自定义除了内容以外的任何外观上的表现.这两种手段有着明显的区别,你需要根据你的商务需要去选择最适合你的应用程序的解决方案. Windows 客户端程序 皮肤技术在Windows客户端程序中已经流行了相当一段时间了,这或许会让你认为不需要太大努力就可以将同样的皮肤体系运用在你的web