Str*_*ger 72 c# f# default keyword c#-to-f#
我正在寻找相当于C#的default关键字,例如:
public T GetNext()
{
T temp = default(T);
...
Run Code Online (Sandbox Code Playgroud)
谢谢
blu*_*blu 82
我在博客中发现了这一点:" 这个C#代码在F#中是什么样的?(第一部分:表达式和语句) "
C#有一个名为"default"的运算符,它返回给定类型的零初始化值:
Run Code Online (Sandbox Code Playgroud)default(int)它的实用性有限; 最常见的是你可以在泛型中使用默认值(T).F#具有与库函数类似的构造:
Run Code Online (Sandbox Code Playgroud)Unchecked.defaultof<int>
Tom*_*cek 33
从技术上讲,F#函数Unchecked.defaultof<'a>相当于defaultC#中的运算符.但是,我认为值得注意的是,在F#中defaultof被认为是不安全的东西,并且只有在真正需要时才应该使用(就像使用一样null,在F#中也是不鼓励的).
在大多数情况下,您可以避免defaultof使用该option<'a>类型.它允许您表示值尚不可用的事实.
但是,这里有一个简短的例子来证明这个想法.以下C#代码:
T temp = default(T);
// Code that may call: temp = foo()
if (temp == default(T)) temp = bar(arg)
return temp;
Run Code Online (Sandbox Code Playgroud)
在F#中可能会这样写(使用命令功能):
let temp = ref None
// Code that may call: temp := Some(foo())
match !temp with
| None -> bar(arg)
| Some(temp) -> temp
Run Code Online (Sandbox Code Playgroud)
当然,这取决于您的具体情况,在某些情况下,您defaultof是唯一可以做的事情.但是,我只想指出defaultof在F#中使用频率较低.