Можно ли отключить предупреждения компилятора для определенных строк?

В C # это работает:

[Obsolete]
class Old { }

#pragma warning disable 612
    var oldWithoutWarning = new Old();
#pragma warning restore 612
    var oldWithWarning = new Old();

Это было бы очень полезно для отключения предупреждений о неполных совпадениях с шаблоном, особенно когда функция принимает конкретный случай DU.

14
Daniel 29 Авг 2011 в 20:11

2 ответа

Лучший ответ

Нет, предупреждения отключены для каждого файла (или, возможно, «отсюда до конца файла») при использовании #nowarn. (Или для каждой компиляции / проекта при использовании свойств проекта / командной строки --nowarn.)

7
Brian 29 Авг 2011 в 16:28

Поскольку все является выражением в 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)))
1
jbtule 26 Мар 2018 в 18:39