知识大全 .NET框架类小结
Posted 知
篇首语:忧劳可以兴国,逸豫可以亡身。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 .NET框架类小结相关的知识,希望对你有一定的参考价值。
.NET框架类小结 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
一 基本概念
NET框架(Framework)是一个开发 部署和运行 NET应用的环境 包括了ASP NET 公共语言运行时环境(CLR)以及 NET 框架类 关于ASP NET和CLR的介绍已经有很多 相对而言 关于 NET框架类的介绍却比较少见
NET框架类也即System类 它提供了大量我们在构造ASP NET应用(以及非ASP NET应用时)可以利用的核心功能 System类可在所有 NET语言中使用 所以我们可以把System类看成是一种 NET的Windows API 与Windows API不同的是 System类提供了类似于的高级接口 相当容易使用
正如所有其他 NET类 System类也以程序集(Assembly)的形式存在 NET中的程序集类似于 DLL或者EXE文件——它是保存类代码的执行文件 例如 Math类(包括其属性和方法定义)位于mscorlib dll程序集 NET有两种类型的程序集——私有程序集 共享程序集 私有程序集是属于单个应用的程序集 通常位于应用的bin目录 与此相反 共享程序集可以用于多个应用 而且它应该由程序集的创建者装入到全局程序集缓冲区(相当于 NET中的系统注册表) NET System类都属于共享程序集
如果你曾经用Windows API编程 你肯定知道使用Windows API的困难在于 我们很难识别和找出要调用的是哪一个函数 在Windows API DLL之内不存在对函数进行组织的方法 看起来就像所有的API调用都被随意堆砌到了一个庞大的DLL之中 幸运的是 NET类按照逻辑关系组织成了称为名称空间(Namespace)的层次结构 例如 Math类是System名称空间的一个成员 名称空间在层次结构中可以嵌套多层 例如 ADOConnection类是System Data ADO类的一个成员
引用名称空间中的成员
要使用名称空间中的类 我们必须顺著名称空间的层次结构找到具体要使用的类 即通过 分隔的名字显式地引用类 例如 要创建一个ADOConnection对象 我们必须使用类似下面的代码(本文的所有例子都用Visual Basic编写 但不管是哪一种 NET语言 基本概念仍旧是一样的)
Dim cnx As System Data SQL SQLConnection cnx = New System Data SQL SQLConnection( _ server=(local);uid=sa;pwd=;database=pubs )
除了上面的方法 我们还可以用Import指令简化对类的引用 例如 下面的代码告诉ASP NET把System Data SQL名称空间导入到当前页面
<%@ Import Namespace= System Data SQL %>
导入名称空间之后 我们就可以直接引用类的名字 省略所有类名字前面的名称空间说明 现在创建ADOConnection对象的代码为
Dim cnx As SQLConnection cnx = New SQLConnection( server=(local);uid=sa;pwd=;database=pubs )
可见 使用Import指令可以减少大量的输入许多名称空间已经由ASP NET自动导入 我们不必再为了简化名称引用而去导入这些名称空间 这些名称空间如下
System System Collections System Text System Text RegularExpressions System Web System Web Caching System Web SessionState System Web Security System Web UI System Web UI WebControls System Web UI HtmlControls
应该注意的是 导入一个层次较高的名称空间并不意味着同时导入了层次结构中位于它下面的名称空间 也就是说 下面的Import指令只导入System Data名称空间中的类 但没有从System Data ADO System Data SQL以及其他System Data下面的名称空间导入类
<%@ Import Namespace= System Data %>
类的成员类包含各种成员——属性(Property) 方法(Method) 域(Field) 事件(Event) 以及构造类的构造器(Constructor) 属性描述了类的特征 比如System Array类有一个Length属性 方法是类能够执行的动作 例如我们可以调用Array类的Sort方法排序数组 域类似于属性 对于任何具体的应用 我们可以象对待属性一样对待域 例如Math类的PI属性返回π的值 事件代表着我们可以对它作出反应的动作 例如ADOConnection类有一个名为InfoMessage的事件 这个事件在数据库提供者发送警告或者提示性信息的时候触发 最后 构造器是一种特殊的方法 它在创建新对象的时候被调用 例如 当我们创建新的SQLConnection对象时 我们就调用该类的构造函数并把一个数据库连接串传递给它
三 处理日期/时间数据
System DateTime类提供了许多处理DateTime值的方法 要创建一个DateTime值 我们只需声明一个DateTime类型的变量 并通过 # 分隔符赋予它一个DateTime常量 如下所示
Dim SeattleQuake As DateTime = # / / : #
System DateTime类一个很大的优点是 我们能够通过它的属性非常方便地分析日期/时间值 这些DateTime类属性的含义非常明显 它们是 Year Month Day DayOfWeek DayOfYear Hour Minute Second Millisecond Ticks 等 每个Ticks等于 个纳秒(毫微秒) 例如 在下面的代码中 answer的值将等于
answer = SeattleQuake Hour
我们还可以用Date和TimeOfDay属性获得DateTime数据的日期或者时间部分 TimeOfDay属性返回的是一个TimeSpan值 它表示已流逝的按ticks计的时间 可以想象 利用TimeSpan值的属性我们可以分析出TimeSpan时间的各个部分 请参见 NET Framework SDK文档了解详细信息
System DateTime类还提供了几个增加(或者减少)DateTime值某一部分的方法 它们是 AddYears AddMonths AddDays AddHours AddMinutes AddSeconds AddMilliseconds AddTicks
例如 下面的代码对指定的日期(BDay)进行加 年 减 年操作
Dim BDay As DateTime = # / / : # Dim NextBDay As DateTime Dim LastBDay As DateTime
NextBDay = TheDate AddYears( ) LastBDay = TheDate AddYears( )
类的成员可以是以下两种类型之一 静态成员 实例成员 静态成员(也称为共享成员)是所有类的实例共享的成员 不依赖于类的具体实例 要使用静态成员 我们只需象使用对象一样通过类的名字引用成员的名字即可 例如 System Math类的Pow方法是一个静态成员 用来计算数值的乘方 下面的代码计算 的 次方
answer = Math Pow( )
与静态成员相反 实例成员依赖于具体的实例对象 它意味着 在使用类的实例成员之前 我们必须先创建对象实例 例如 我们可以用System Random类的实例成员NextDouble方法返回一个随机数字 下面的代码先创建一个System Random类型的对象 然后把dblRandom变量的值设置为一个随机数字
Dim dblRandom As Double Dim rnd As Random = New Random dblRandom = rnd NextDouble
VB NET函数与System类的成员VB NET语言的历史是一个不断变化的漫长过程 虽然Microsoft在VB NET中取消了许多原来VB的功能 但VB NET语言中的许多功能仍旧与System类的功能重复 如果可以选择的话 使用System类几乎总是比使用VB NET功能更好 使用System类不仅使得代码更容易移植到其他语言 而且使得代码更符合未来VB NET版本的要求 因为在未来的VB NET语言中 Microsoft可能继续取消某些早期VB语言的功能
二 数学计算
System Math类包含大量可用于数学计算的域和方法 它的所有成员都是静态的 System Math类的Pow方法能够计算数值的乘方 例如 我们可以用Math PI域和Pow方法计算圆的面积(下例中dblRadius是圆的半径) Math PI返回圆周率π
dblArea = Math PI * Math Pow(dblRadius )
用Sqrt方法可以计算数值的平方根 例如 下面的代码计算 的平方根
answer = Math Sqrt( )
用Abs方法可以返回数值的绝对值 例如 下面的代码返回 的绝对值 answer的值将是
answer = Math Abs( )
Sign方法可以返回数值的符号 如果数值是负数 Sign返回 如果是正数 Sign返回 如果是 Sign返回 Round方法把数值舍入成为最接近的整数 例如 下面的代码舍入 这个值 answer的值将是
answer = Math Round( )
如果你想要Round一个恰好处于两个整数值之间的值 比如 则Round总是返回最接近该数值的偶数 也就是说 Math Round( )返回值是 而Math Round( )的返回值是 Floor方法用来截短一个实数 它的返回值是小于指定数值的最大整数值 例如 下面的代码截短数值 answer的值将是
answer = Math Floor( )
注意Floor方法操作负数的结果可能与你所想象的不同 例如 Floor( )的返回值应该是
除了上面介绍的这些方法之外 Math类还包含许多进行三角计算和对数计算的方法
三 生成随机数字
System Random类用来生成随机数字 然而 与VB的Rnd函数不同 System Random既能够返回小数随机数 也能够返回整数随机数 System Random类根据系统日期和时间自动生成随机数种子初始化随机数生成器
用System Random的NextDouble方法可以返回一个 到 之间的Double类型随机数 用Next方法可以返回两个整数值之间的随机整数 NextDouble和Next都是实例方法 所以在使用这些方法之前你必须先创建一个System Random类型的对象 下面是一个完整的ASP NET页面 它显示了如何运用这些方法生成 个随机数字 其中 个随机数字处于 到 之间 另外 个处于 到 之间
<%@ Page Language= vb Explicit= True %> <head> <title>Random实例</title> <script language= VB runat= server > Sub Page_Load(Src as Object E as EventArgs) 等价于VB Rnd函数的 NET框架类 随机数生成方法 Dim rnd As System Random = New System Random Dim i As Integer
lblOutput Text &= <table border= > lblOutput Text &= <tr><th>rnd NextDouble</th> & _ <th>Next( )</th></tr> For i = To lblOutput Text &= <tr> lblOutput Text &= <td> & rnd NextDouble & </td> lblOutput Text &= <td> & rnd Next( ) & </td> lblOutput Text &= </tr> Next lblOutput Text &= </table> End Sub </script> </head> <body> <asp:label id= lblOutput runat= server /> </body> </>
下图显示了这个页面的运行结果(当然 如果你运行这个页面 得到的很可能是一组不同的随机数字)
第二部分
前面我们讨论了 NET Framework中程序集 名称空间和类如何结合成一个整体 以及如何利用内建的System类进行数学计算和生成随机数字 本文的第二部分将接着讨论其他几个有用的类 包括Array类 String类 DateTime类等
一 处理字符串
NET 框架类(或System类)提供了大量可在构造 NET应用时使用的核心功能 这些功能适用于任何语言环境 本文的第一部分介绍了程序集 名称空间等基本概念以及System Math和System Random类
这是本文的第二部分 接着讨论其他几个很有用的类 System String System Array System DateTime
值得指出的是 正如本文前面所提到的 当我们用VB NET作为编程语言时 我们常常面临这样一种选择 是使用VB NET语言内建的功能 还是使用等价的System类功能 在处理数组 日期/时间 字符串数据时 我们就面临这种选择 如果你曾经是一个VB 程序员 你的第一个选择可能会是经过检验的 确实有效的老方法 但是 如果有可能 你最好还是改掉老习惯 采用新的 NET System类 为什么呢?因为采用System类能够使你的代码更容易移植到其他 NET语言以及未来的VB NET版本
System String类提供了丰富的字符串处理能力 使用System String类 我们可以 确定字符串的长度 查找子串 改变字符串的大小写 比较两个字符串 分割字符串 等等
确定字符串长度使用的是Length属性 例如 在下面的代码中 intLength的值将是
Dim strColor As String = blue Dim intLength As Integer intLength = strColor length
我们用IndexOf方法从字符串找出第一个匹配的子串 如果能够找到子串 IndexOf方法返回子串的开始位置(第一个字符的开始位置为 ) 如果不能找到 则IndexOf返回 IndexOf的查找是大小写敏感的 IndexOf是一个被重载(Overload)的方法 它允许传入的参数包括 Char类型的字符 String类型的字符串 Char类型的字符数组 下面这个IndexOf aspx页面示范了三种不同参数类型IndexOf方法的运用
<%@ Page Language= vb Explicit= True %> <head> <title>System String实例</title> <script language= vb runat= server > Sub Page_Load(Src as Object E as EventArgs) Dim chrG As Char = G Dim strWord As String = for Dim chrVowels As Char() = Dim strPhrase As String = _ One small step for man one giant leap for mankind Dim i As Integer
lblOutput Text &= <br />strPhrase = & strPhrase lblOutput Text &= <br />Position of chrG = _ & strPhrase IndexOf(chrG) lblOutput Text &= <br />Position of strWord = _ & strPhrase IndexOf(strWord) lblOutput Text &= <br />Position of chrVowels = _ & strPhrase IndexOf(chrVowels) End Sub </script> </head> <body> <asp:label id= lblOutput runat= server /> </body> </>
这个页面的运行结果如下IndexOf允许指定两个用来限制搜索的可选参数 它们分别代表搜索字符串的起始和结束位置 例如 下面的代码对chrVowels的搜索限制在第 到 个字符之间
strPhrase IndexOf(chrVowels )
LastIndexOf方法类似于IndexOf方法 但它搜索的是子串的最后一次出现 例如 如果你修改IndexOf aspx页面 用LastIndexOf方法来取代IndexOf方法 则strWord的位置将是 而不是使用System String的ToUpper和ToLower方法可以把字符串分别改成全部大写或者全部小写 例如
strUpper = This is a mixed case sentence ToUpper() strLower = This is a mixed case sentence ToLower()
从这个例子可以看出 System String的属性和方法既可以在字符串变量中应用 也可以直接在字符串文本中应用你可以用Compare方法比较两个字符串是否相同 如果两个字符串相同 Compare方法返回 如果第一个字符串小于第二个字符串 Compare返回一个负数 如果第一个字符串大于第二个字符串 Compare方法返回一个正数 Compare是一个静态方法(参见本文前面关于静态方法和实例方法的说明) 默认情况下 Compare对字符串的比较是大小写敏感的 且不考虑地区关系 例如 下面对Str 和Str 的比较将返回 它表示Str 小于Str
Dim str As String = Dim str As String = abcd Com
answer = String Compare(str str )
我们可以向Compare传入第三个可选的参数 如果第三个参数指定为True 则字符串比较操作忽略大小写 比如下面的代码中answer的值将是 即两个字符串相等
answer = String Compare(str str True)
正如IndexOf方法 Compare也是一个被重载的方法 我们可以向Compare方法传入第四个参数要求进行地区相关的比较 或者 我们也可以指定字符的起始和结束位置使得比较只对字符串的一部分进行 请参见 NET Framework SDK文档了解详细信息 Split方法把字符串分割成一个由子串构成的数组 使用Split方法时 我们必须指定用来分割字符串的 Char类型的分割字符 下面的Split aspx页面示范了Split方法的应用
<%@ Page Language= vb Explicit= True %> <head> <title>Split实例</title> <script language= vb runat= server > Sub Page_Load(Src as Object E as EventArgs) Dim strASP As String = _ ASP NET is the next generation of Active Server Pages Dim strWords() As String Dim i As Integer
strWords = strASP Split( )
For i = strWords GetLowerBound( ) to strWords GetUpperBound( ) lblOutput Text &= i & : & strWords(i) & <br /> Next End Sub </script> </head> <body> <asp:label id= lblOutput runat= server /> </body> </>
Split aspx的输出结果如下前面我们讨论了String类部分属性和方法的应用 String还包括许多其他成员 比如 从数组构造出字符串 把字符串中的一个字符替换成其他字符 删除字符串前面或者后面的空白字符 等等
二 操作数组
我们可以通过System Array类用各种方法处理数组 与前面的几个类一样 System String类的许多功能重复了VB语言所具有的功能 但Array类也增加了一些传统VB语言不具备的功能 比如搜索和排序数组
Array类的GetLowerBound和GetUpperBound方法用于确定数组指定维的下界和上界 下面这个语句来自Split aspx(参见前面的例子) 它通过GetLowerBound和GetUpperBound方法确定strWords数组的边界
For i = strWords GetLowerBound( ) to strWords GetUpperBound( )
System Array的Sort静态方法能够对一维数组的内容排序 Sort方法对数组的排序是大小写敏感的 而且它不能对一维以上的数组排序 调用Sort方法的语法下
Array Sort(array_name)
对于一维数组 我们还可以用Reverse方法颠倒数组元素的次序 Reverse方法的语法类似于Sort方法
Array Reverse(array_name)
下面的代码(来自ArraySort aspx示例页面)示范了Sort和Reverse方法的应用
Dim strTerms() As String = JScript VB ASP ASP NET NET Dim i As Integer
lblOutput Text &= Original Array<br /> For i = strTerms GetLowerBound( ) to strTerms GetUpperBound( ) lblOutput Text &= i & : & strTerms(i) & <br /> Next
Array Sort(strTerms) lblOutput Text &= <br />After Sorting<br /> For i = strTerms GetLowerBound( ) to strTerms GetUpperBound( ) lblOutput Text &= i & : & strTerms(i) & <br /> Next
Array Reverse(strTerms) lblOutput Text &= <br />After Reversing<br /> For i = strTerms GetLowerBound( ) to strTerms GetUpperBound( ) lblOutput Text &= i & : & strTerms(i) & <br /> Next
ArraySort aspx页面的输出结果如下System Array方法支持用IndexOf和LastIndexOf方法对一维数组进行搜索 这两个方法与System String类的同名方法类似 用IndexOf和LastIndexOf方法搜索数组的语法如下
answer = Array IndexOf(array_name search_string) answer = Array LastIndexOf(array_name search_string)
这两个方法分别返回搜索字符串第一次和最后一次匹配的位置 如果不能找到 则返回值是 这种搜索是大小写敏感的 例如 在下面的代码中 answer将是 它表示字符串 ASP 是strTerms数组的第三个元素
Dim strTerms() As String = JScript VB ASP ASP NET NET answer = Array IndexOf(strTerms ASP )
cha138/Article/program/net/201311/12109相关参考
ASP.NETMVC4框架揭秘:第一章小结 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 本章小
Net框架类库中定时器类的使用 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 不论在客户端应用程
技巧:.Net框架类库中定时器类的使用[1] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 不论
技巧:.Net框架类库中定时器类的使用[3] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 不像
技巧:.Net框架类库中定时器类的使用[4] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! Sh
技巧:.Net框架类库中定时器类的使用[2] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 对S
使用.NET框架类替代API调用的问题 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 避免使用W
浅析.NET框架下的自动内存管理 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 一抽象类 抽象
ASP.NET页面间数据传递小结 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! ASPNET较A
ASP.NET中TreeView控件使用小结 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 浏览