什么是惯用的F#相当于声明一个变量供以后在C#中使用

FSh*_*ust 2 f# immutability

在C#中,我可以声明未初始化的变量,然后在类的各种方法中将其分配给它们.例如,在NUnit测试中,我可以声明一个仅在设置方法中初始化然后在各种测试中重复使用的类型变量.

private MyTestClass sut;

public Setup()
{
    sut = new MyTestClass();
    etc.
}

public FirstTest()
{
    sut.DoSomeWork(1); 
}

public SecondTest()
{
    sut.DoSomeWork(2);
}
Run Code Online (Sandbox Code Playgroud)

我想在F#中做相同的事情.但是根据这个和其他人的说法,未分配的'变量'并不是F#中的完成.

在我的F#测试的情况下,测试不是在任何类型中,只是在模块内,所以[<DefaultValue>] val不起作用.使用mutablejust感觉不对,因为这似乎是F#编码器的最后选择.

由于idomatic F#不应该需要未分配的值,解决这个问题的"正确"方法是什么?

The*_*Fox 5

您可以使用函数和值.无需声明未分配的变量.

let makeTestClass() =
    MyTestClass()
    // etc.

let ``First test``() =
    let sut = makeTestClass()
    sut.DoSomeWork()

let ``Second test``() =
    let sut = makeTestClass()
    sut.DoSomeWork()
Run Code Online (Sandbox Code Playgroud)