C#的一些关键字的总结
摘要:checked 既是操作符又是语句。
确保编译器运行时,检查整数类型操作或转换时出现的溢出。
const 标识一个可在编译时计算出来的变量值,即一经指派不可修改的值。
delegate 指定一个声明为一种委托类型。委托把方法封装为可调用实体,
能在委托实体中调用。
enum 表示一个已命名常量群集的值类型。
event 允许一个类或对象提供通知的成员,他必须是委托类型。
explicit 一个定义用户自定义转换操作符的操作符,
通常用来将内建类型转换为用户定义类型或反向操作。
必须再转换时调用显示转换操作符。
extern 标识一个将在外部(通常不是c#语言)实现的方法。
finally 定义一个代码块,在程序控制离开try代码快
阅读全文
posted @
2008-09-07 16:14
小顾问
阅读(2848)
推荐(0) 编辑
Socket编程四
摘要:首先服务器方要先启动,并根据请示提供相应服务:(过程如下)
1、打开一通信通道并告知本地主机,它愿意在某一个公认地址上接收客户请求。
2、等待客户请求到达该端口。
3、接收到重复服务请求,处理该请求并发送应答信号。
4、返回第二步,等待另一客户请求
5、关闭服务器。
客户方:
1、打开一通信通道,并连接到服务器所在主机的特定端口。
2、向服务器发送服务请求报文,等待并接收应答;继续提出请求……
3、请求结束后关闭通信通道并终止。
阅读全文
posted @
2008-09-06 19:24
小顾问
阅读(491)
推荐(0) 编辑
Socket编程三
摘要: IPAddress ip1 = GetServerIp();
IPEndPoint iep = new IPEndPoint(ip1, 8000);
socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
socket.Bind(iep);
byte[] byteMessage=new byte[1000];
while (true)
{
try
{
socket.Listen(5);
Socket clientSocket = socket.Accept();
clientSocket.Receive(byteMessage
阅读全文
posted @
2008-09-05 22:43
小顾问
阅读(414)
推荐(0) 编辑
Socket编程二
摘要: private Thread threadRead; //创建线程,用以侦听端口号,接受信息
private TcpListener tcpListen;//侦听端口号
private bool blistener = true;
private NetworkStream stream;
private StreamReader read;
private TcpClient client;
private delegate void listbox_show(string str);
listbox_show listboxshow;
public Tcpserver()
{
InitializeComponent();
listboxshow = new listbox_show(show);
}
阅读全文
posted @
2008-09-05 22:28
小顾问
阅读(448)
推荐(0) 编辑
socket编程一
摘要: //提供网际协议(IP)地址IPAddress
IPAddress HostIP = IPAddress.Parse("127.0.0.1");
//将网络端点表示为IP地址和端口号
IPEndPoint point;
//定义两个套接字
Socket socket;
Socket acceptedSocket;
//开启接受套接字的服务
private void button1_Click(object sender, EventArgs e)
{
try
{
point = new IPEndPoint(HostIP, Int32.Parse("1571"));
socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, Prot
阅读全文
posted @
2008-09-05 22:11
小顾问
阅读(567)
推荐(0) 编辑
.NET 线程池编程技术
摘要: 在这篇文章中,我们知道了为什么在我们的服务器应用中需要使用线程池来优化资源和CPU的利用。我们学习了一个线程池是如何实现的,需要考虑多个因素如:CPU使用的百分比,队列请求或者系统的处理器数量。
.NET提供了丰富的线程池的功能以让我们的应用程序使用, 并且与.NET框架的类紧密地集成在一起。这个线程池是高度优化了的,它只需要最少的CPU时间和资源,而且总能适应目标平台。
因为与框架集成在一起,所以框架中的大部分类都提供了使用线程池的内在功能,给开发人员提供了集中管理和监视应用中的线程池的功能。鼓励第三方组件使用线程池,这样它们的客户就可以享受.NET所提供的全部功能。允许执行用户函数,定时器,I/O操作和同步对象。
假如你在开发服务器应用系统,只要有可能就在你的请求处理系统中使用线程池。或者你开发了一个让服务器程序使用的库,那么尽可能提供系统线程池的异步对象处理。
阅读全文
posted @
2008-09-04 18:23
小顾问
阅读(1724)
推荐(0) 编辑
关于aspnet_regsql不能使用的一种解决
摘要:System.Web.HttpException: 无法连接到 SQL Server 数据库。 ---> System.Data.SqlClient.SqlException: 在建立与服务器的连接时出错。在连接到 SQL Server 2005 时,在默认的设置下 SQL Server 不允许进行远程连接可能会导致此失败。 (provider: 命名管道提供程序, error: 40 - 无法打开到 SQL Server 的连接)。。。。。。
”
解决办法:
在aspnet_regsql第三步时,将“服务器名称 后加上 /SQLEXPRESS 就好了,填入数据库名称(以创建好的)直接下一步。
阅读全文
posted @
2008-08-27 19:59
小顾问
阅读(626)
推荐(0) 编辑
.net的垃圾收集器
摘要:以运行库为目标的代码称为托管代码
C++分成两种,一种是托管C++,另外一种是非托管C++
C#是以运行库为目标设计的,因此用C#编写的代码基本上为托管代码
不以运行库为目标的代码称为非托管代码
.NET提供了与非托管代码互操作的服务,比如与COM互操作的Interop服务
.NET平台在内存管理方面提供了GC(Garbage Collection),负责自动释放托管资源和内存回收的工作,但它无
法对非托管资源进行释放,这时我们必须自己提供方法来释放对象内分配的非托管资源,比如你在对象的实现代
码中使用了一个COM对象。
阅读全文
posted @
2008-08-01 18:21
小顾问
阅读(500)
推荐(0) 编辑
指针在C#中的一点总结
摘要:2. C#提供一个的关键字stackalloc用于申请堆栈内存。注意,这个申请内存分配的是栈内存,当函数执行完毕后,内存会被自动回收。不过我想用这个栈内存基本可以解决40%的问题,而且使用的时候不必担心内存泄漏问题。
3. .net 好像不直接支持堆内存的申请(这个对.net来说很危险),不过我们可以通过调用win32 api 的方法进行申请。这样就可以解决剩下40%的问题。堆内存申请的方法在MSDN里面有相关的文档。
4. 结构体是一个特殊的对象。他与类的定义就差一个关键字,使用方法也和类一样,可以定义属性,可以定义方法。但是在进行指针操作的时候双方就有很大的差别了。结构体可以通过sizeof()取得大小,大小与结构体里有多少实体变量有关,但是如果struck里定义了类的对象,或者指针,sizeof可能会编译不过(void* 的空指针例外,不过需要在结构体声明处加上unsafe)。
5. fixed关键字:fixed()会告诉垃圾收集器,类实例的某些成员有指向他们的指针,所以这些实例不能移动目前了解的不多,不过有一个很实用的例子可以让指针能够和.net里的数组进行交互操作:
阅读全文
posted @
2008-08-01 16:40
小顾问
阅读(23636)
推荐(0) 编辑
委托与事件总结
摘要:委托和事件的区别是:委托与类,结构,接口,枚举是一类,
而事件属类成员,和属性,方法,字段是一类。
如果你的委托定义在类里面,那么这个委托的作用域为整个类,不是整个命名空间,在另外的类里是不能应用这个委托的,如若你的委托定义在类体之外,那么这个委托的作用域为整个命名空间,在各个类之间是可以共享的
阅读全文
posted @
2008-07-29 21:05
小顾问
阅读(832)
推荐(0) 编辑
Regex使用的一点理解
摘要:这里的一个问题是:[2]{3,4}表示字符串中要出现连续的2的次数为3到4次,像34322sf是符合的,但是像34532222saf也是符合的字符串哦,因为后面的多余的2是不影响的,他已经满足了要求了就不用看后面的2了
但是这里还有一个问题:[0-9a-z]{3,4}表示字符串中出现的字符在0-9或者a-z中的次数为3到4次,而不是要相同的字符出现3到4次,这里的{}表示前面的Regex而不是结果,注意理解哦
阅读全文
posted @
2008-07-19 20:47
小顾问
阅读(1850)
推荐(0) 编辑
字符串与正则表达式
摘要:非负整数:“^\d+$ ”
正整数: “ ^[0-9]*[1-9][0-9]*$”
非正整数: “ ^((-\d+)|(0+))$”
整数: “ ^-?\d+$”
阅读全文
posted @
2008-07-17 21:16
小顾问
阅读(37806)
推荐(0) 编辑
C# 泛型编程二
摘要:在项目中通过对项目不断更深的认识,运用了设计模式,就难免不运到开箱和装箱操作,通常的开箱和装箱操作对系统的性能有一定的影响。为了解决这一个问题,其中一种解决方案是运用泛型来解决。下面是C#2.0泛型的简单介绍和使用,便于在项目中灵活运用.
阅读全文
posted @
2008-07-17 20:39
小顾问
阅读(313)
推荐(1) 编辑
C#泛型编程一
摘要:.NET 2.0的System.Collections.Generic 命名空间包含了泛型集合定义。各种不同的集合/容器类都被"参数化"了。为使用它们,只需简单地指定参数化的类型即可。
泛型:通过参数化类型来实现在同一份代码上操作多种数据类型。利用“参数化类型”将类型抽象化,从而实现灵活的复用。
阅读全文
posted @
2008-07-17 20:30
小顾问
阅读(372)
推荐(0) 编辑
关于DataTable的一点意外用法
摘要:id curr next
1 A B
1 B C
1 C D
1 D E
1 E F
假如知道ID=1和curr=B,求最后一个节点E
阅读全文
posted @
2008-06-25 22:18
小顾问
阅读(335)
推荐(0) 编辑
几个简单的注意的细节问题(关于.net)
摘要:1.如果你的委托定义在类里面,那么这个委托的作用域为整个类,不是整个命名空间,在另外的类里是不能应用这个委托的
委托本质上是一种字段
阅读全文
posted @
2008-03-28 15:34
小顾问
阅读(536)
推荐(0) 编辑
readonly和const比较
摘要:前天犯了个低级错误,是关于readonly的,总结了一下: C#的readonly关键字只能在字段上面使用 public readonly TcpClient client; 不能在类,方法,属性上面使用readonly!! 顺便看了一下readonly和const的区别: readonly和const都是用来标识常量的。 const可用于修饰class的field或者一...
阅读全文
posted @
2008-03-28 14:52
小顾问
阅读(3697)
推荐(2) 编辑