F#入门-第五章 F#开发实例-第三节 最好知道的注意事项
2010-09-25 17:13
387 查看
以下记载关于Windows编程时,最好知道一下的注意事项。
■ 枚举的处理
下例中显示如何进行象按钮等控件的Anchor属性中AnchorStyles这样的枚举的设置。
枚举的处理
■ 下溯
将父类转换为子类叫做下溯。在F#中采用:?这个符号可以实现下溯。
例子1
例子2
■ 可变类型
通过“#类型名”,可以将父类的类型作为类型信息进行指定。
可变类型
■ Boxing与Unboxing
boxing是指相当于在C#中强制转换为object类型的操作。它的相反操作为Unboxing。F#中的obj类型相当与C#中的object类型。
obj类型的利用
例如使用上述转换,使用System.Runtime.Serialization.Formatters.Binary,可以定义任意类型的数据的序列化函数。
■ Attribute
可以将代码段使用[< ... >]的形式括起来。例如如果使用下例中定义的函数,编译器会发出警告。
System.Obsolete属性
■ use
相当于C#语言中的using语句。如果不使用let语句,而使用use语句,系统自动调用Dispose函数。
use的利用
■ 枚举的处理
下例中显示如何进行象按钮等控件的Anchor属性中AnchorStyles这样的枚举的设置。
枚举的处理
//OR运算 button.Anchor <- AnchorStyles.Left ||| AnchorStyles.Right;; //运算参考:比较老式的处理方法 button.Anchor <- Enum.combine[AnchorStyles.Left;AnchorStyles.Right];; //指定空的时候 let settextattr (t:RichTextBox) = t.LanguageOption <- Enum.of_int(0);; // t.LanguageOption <- Enum.combine[];; |
将父类转换为子类叫做下溯。在F#中采用:?这个符号可以实现下溯。
例子1
match object_value with | :? string -> print_endline "string value" | :? int -> print_endline "int value" |
例子2
try File.Copy(src,dst); with | :? PathTooLongException -> msg "路径太长" | :? NotSupportedException -> msg "路径中含有冒号" | :? DirectoryNotFoundException -> msg "拷贝路径为Nothing或空文字列" | :? UnauthorizedAccessException -> msg "不能访问文件" | :? System.Security.SecurityException -> msg "没有必须的访问权限" |
通过“#类型名”,可以将父类的类型作为类型信息进行指定。
可变类型
let settext (c : #Control) = c.Text <- "text";; //这样写意思相同 let settext (c : 'a when 'a :> Control) = c.Text <- "text";; |
boxing是指相当于在C#中强制转换为object类型的操作。它的相反操作为Unboxing。F#中的obj类型相当与C#中的object类型。
obj类型的利用
//转换为obj类型 box 1;; box "abc";; //从obj类型返回到原来的类型 unbox<string> (box "abc");; (unbox (box "abc") : string);; |
■ Attribute
可以将代码段使用[< ... >]的形式括起来。例如如果使用下例中定义的函数,编译器会发出警告。
System.Obsolete属性
[<System.Obsolete("旧版本的函数")>] let old () = print_endline "old function";; |
相当于C#语言中的using语句。如果不使用let语句,而使用use语句,系统自动调用Dispose函数。
use的利用
use fs = new FileStream(fullpath,FileMode.Open,FileAccess.Read) in fs.Read(bytes,0,Int32.of_int64 fs.Length) |> ignore; ... |
相关文章推荐
- F#入门-第五章 F#开发实例-第二节 创建文字编辑器(二)
- F#入门-第五章 F#开发实例-第一节 创建文字编辑器(一)
- Struts开发框架实例 及注意事项
- 嵌入式系统开发入门二:C语言的几个注意事项
- DWR实例教程开发步骤及注意事项
- Android-少不了的 AAR 文件常识,最好知道的注意事项
- WebAPP设计和入门开发需要注意的5个事项
- 新手入门嵌入式开发注意事项
- TEC1401.Report开发技术总结 - 第五章 使用Oracle Reports开发报表-在EBS应用中注册Report的注意事项(4/4)
- 微信小程序 canvas开发实例及注意事项
- WebAPP设计和入门开发需要注意的5个事项
- 第三节 微信开发前注意事项
- core data 入门(2)多对多映射与常见的开发注意事项
- Vue2.0入门实例注意事项
- Dynamic CRM 2013学习笔记(十五)报表设计:报表入门、开发工具及注意事项
- Erlang入门第二期:Erlang“记录”的用法及注意事项
- 64位平台C/C++开发注意事项
- 学习web前端开发基础,入门要注意哪些问题
- PB .NET Web Form 开发注意事项
- 微信公众账号开发教程(三) 实例入门:机器人(附源码)(转)