博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
在命名空间下定义类型
阅读量:5776 次
发布时间:2019-06-18

本文共 1520 字,大约阅读时间需要 5 分钟。

在命名空间下定义类型

 

假设定义的类型要用于其它.NET 语言。应该把它们放在命名空间下,而不是模块中。

这是由于模块在被编译成 C# 或其它.NET 语言时。被处理成类,在模块中定义的不论什么类型都成为这个类型内部的类。

尽管对于 C# 来说。这并非什么大问题,可是。假设用命名空间取代模块,C# client代码看起来会更清晰。这是由于在 C# 中,仅仅用using 语句导入(open)命名空间。而假设是在模块中的类型。在 C# 中使用时,就必须把模块名作为前缀。

让我们看一下这种样例。以下的样例定义了类TheClass,它是在命名空间下;随类一起还提供几个函数,但不能直接放在命名空间下,由于,值不能在命名空间中定义。

这里,定义了一个名字叫TheModule 模块,来管理函数值。

 

namespace Strangelights

open System.Collections.Generic

 

// this is a counterclass

type TheClass(i) =

 let mutable theField = i

 member x.TheField

   with get() =theField

 // increments the counter

 member x.Increment() =

   theField <- theField + 1

 // decrements the count

 member x.Decrement() =

   theField <- theField - 1

 

// this is a module forworking with the TheClass

module TheModule = begin

 // increments a list of TheClass

 let incList (theClasses: List<TheClass>) =

   theClasses |> Seq.iter (fun c ->c.Increment())

 // decrements a list of TheClass

 let decList (theClasses: List<TheClass>) =

   theClasses |> Seq.iter (fun c ->c.Decrement())

end

 

在 C# 中使用TheClass 类,如今就非常简单了,由于不必要加前缀。也能够非常easy地訪问到TheModule 中的相关函数:

 

// !!! C# Source !!!

usingSystem;

usingSystem.Collections.Generic;

usingStrangelights;

 

classProgram {

 static voidUseTheClass() {

   // create a list of classes

   List<TheClass> theClasses = newList<TheClass>() {

     new TheClass(5),

     new TheClass(6),

     new TheClass(7)};

 

   // increment the list

   TheModule.incList(theClasses);

 

   // write out each value in the list

   foreach (TheClass c in theClasses) {

     Console.WriteLine(c.TheField);

   }

 }

 static voidMain(string[] args) {

   UseTheClass();

 }

}

转载地址:http://izeux.baihongyu.com/

你可能感兴趣的文章
CodeForces 258B Little Elephant and Elections :于1-m中找出七个数,使六个数里面的4和7个数比第七个数严格小:数位dp+dfs...
查看>>
MAP
查看>>
手把手教你测——上网快鸟
查看>>
用javascript获取地址栏参数
查看>>
一起谈.NET技术,你应该知道的15个Silverlight诀窍
查看>>
商教助手!解析夏普液晶高清宽屏投影机系列
查看>>
云南去年有望实现151万贫困人口净脱贫
查看>>
Java架构师面试题系列整理(大全)
查看>>
延伸产业链 中国产粮大省向“精深”问发展
查看>>
消费贷用户70%月收入低于5000元 80、90后是主要人群
查看>>
2018年内蒙古外贸首次突破1000亿元
查看>>
CTOR有助于BCH石墨烯技术更上一层楼
查看>>
被遗忘的CSS
查看>>
Webpack中的sourcemap以及如何在生产和开发环境中合理的设置sourcemap的类型
查看>>
做完小程序项目、老板给我加了6k薪资~
查看>>
java工程师linux命令,这篇文章就够了
查看>>
关于React生命周期的学习
查看>>
webpack雪碧图生成
查看>>
搭建智能合约开发环境Remix IDE及使用
查看>>
Spring Cloud构建微服务架构—服务消费基础
查看>>