ComFreek
ComFreek

Reputation: 29444

Pass `out` parameter (as reference) in F#

I want to call System.Uri.TryCreate():

let uriResult: System.Uri = ref (* what's here? *);
System.Uri.TryCreate(uriName, UriKind.Absolute, uriResult)

As I've learned here, one has to pass a F# reference for .NET out parameters.

But how can I initialize my reference uriResult in my case?

I've tried creating a new, empty Uri object.

let uriResult: System.Uri = ref (new System.Uri());

Error 1
This expression was expected to have type
     Uri
but here has type
    'a ref

Upvotes: 7

Views: 1259

Answers (1)

Daniel
Daniel

Reputation: 47914

As explained in Parameters and Arguments on MSDN (see Passing by Reference), out parameters are automatically tuplized, so you can do this:

match System.Uri.TryCreate(uriName, UriKind.Absolute) with
| true, uriResult -> //OK
| _ -> //not a Uri

Upvotes: 14

Related Questions