我一直在尝试使用F#,并希望尝试在C#项目中使用它来处理某些可以从该语言中获益的代码.
我一直试图弄清楚模块和命名空间在C#项目中的使用方式.例如,以下代码:
namespace File1
#light
type File1(path : string) =
static member Trim(p : string) = p.Trim()
member self.Path = path
Run Code Online (Sandbox Code Playgroud)
然后我尝试在C#中使用它来说:
using File1;
class Program
{
static void Main(string[] args)
{
// Doesn't work
Console.WriteLine(File1.Trim(" hello "));
// Does work
Console.WriteLine(File1.File1.Trim(" hello "));
}
}
Run Code Online (Sandbox Code Playgroud)
我理解为什么第二个有效,但为什么第一个不起作用呢?我使用using声明引入了命名空间,File1应该是一个类.Trim是该类的静态成员.
svi*_*ick 10
这不是由命名空间和类在F#中的行为方式引起的,你做对了.
问题是你有一个名为的名称空间File1和一个名为的类File1.当你File1在C#程序中编写时,即使你有正确的using,它也意味着"命名空间File1",而不是"类File1.File1".如果,例如,你改变了你的命名空间的名称FileNamespace和的名字type来FileType,如预期就不会有什么问题.(我不是说你应该在实际项目中使用这样的命名.)
| 归档时间: |
|
| 查看次数: |
261 次 |
| 最近记录: |