0910 C#学习笔记

今天查询了一些 C#相关的一些知识,在此做一下总结。

StreamReader 类

实现从特定编码中的字节流读取字符的 TextReader。

String.IndexOf 方法

报告此实例中指定的 Unicode 字符或字符串首次出现的基于零的索引。如果在此实例中找不到字符或字符串,该方法返回-1。

String.Substring 方法

从此实例检索子字符串。子字符串以指定的字符位置开始,并具有指定的长度。

String.Trim 方法

返回一个新的字符串,其中将删除当前 String 对象中指定字符集的所有前导和尾部出现。

StreamReader.EndOfStream 属性

获取一个值,该值指示当前流的位置是否在流的末尾。

[STAThread]关键字

[STAThread] 即 single-threaded apartment

每个 Thread 都有一个关于 ApartmentState 的属性,可以把它设置为:STA 或者 MTA,或者 UNKNOWN。

当你想指定工程的启动窗口的时候,你需要在该窗口类中申明一个 Main()方法,并为这个方法设置[STAThread]属性。

[STAThread]是 Single Thread Apartment 单线程套间的意思,是一种线程模型,用在程序的入口方法上(在 C#和 VB.NET 里是 Main()方法),来指定当前线程的 ApartmentState 是 STA。用在其他方法上不产生影响。

在 aspx 页面上可以使用 AspCompat = “true” 来达到同样的效果。这个属性只在 Com Interop 有用,如果全部是 managed code 则无用。简单的说法:[STAThread]指示应用程序的默认线程模型是单线程单元 (STA)。

启动线程模型可设置为单线程单元或多线程单元。如果未对其进行设置,则该线程不被初始化。也就是说如果你用的.NET Framework,并且没有使用 COM Interop,一般不需要这个 Attribute。其它的还有 MTA(多线程套间)、Free Thread(自由线程)。

单线程套间,简单来说所有对于单线程套间中对象的访问都是通过消息来传递的,所以同一时间只有一个线程能够访问单线程套间中的对象。