是否可以禁用特定行的编译器警告?
在C#中,这有效:
[Obsolete]
class Old { }
#pragma warning disable 612
var oldWithoutWarning = new Old();
#pragma warning restore 612
var oldWithWarning = new Old();
这对于禁用不完整模式匹配警告非常有用,尤其是当函数接受DU的特定情况时。
答案 0 :(得分:6)
不,使用#nowarn
时,每个文件(或可能从此处到文件的底部)都会关闭警告。 (或者在使用项目属性/ --nowarn
命令行时每个编译/项目。)
答案 1 :(得分:1)
由于所有内容都是F#中的表达式,因此不难拉出一行或一部分行并将其放入其自己的文件中。
我的问题示例,其中::
模式匹配警告空列表可能性,但我传递给Seq.fold
的状态总是有一个至少包含一个项目的列表。
module FoldBookmarks
#nowarn "25"
let foldIntoBookmarks: (string * int * int) seq -> XamlReport.PDF.Bookmark seq =
Seq.fold (fun ((tl,pl,acc)::l) (t,p,_) -> (t,acc,p+acc)::((tl,pl,acc)::l)) [("",0,1)]
>> Seq.map(fun (x,y,_) -> PDF.Bookmark(Title=x, PageNumber= System.Nullable(y)))