我一直在試圖總結我的頭圍繞此的FxCop侵犯「DoNotDeclareReadOnlyMutableReferenceTypes」不可變的只讀引用類型和FxCop的違規:不申報只讀可變引用類型
MSDN:從MSDN http://msdn.microsoft.com/en-us/library/ms182302%28VS.80%29.aspx
代碼這將導致此衝突:
namespace SecurityLibrary
{
public class MutableReferenceTypes
{
static protected readonly StringBuilder SomeStringBuilder;
static MutableReferenceTypes()
{
SomeStringBuilder = new StringBuilder();
}
}
}
喬恩的回答here和here,據我所知,該領域保持參照對象(在這種情況下, SomeStringBuilder)是隻讀的,而不是對象本身(它由new StringBuilder()
創建)
因此,考慮這個例子,一旦字段有引用它,我將如何更改對象本身?我喜歡Eric Lippert's example如何更改只讀數組,並希望看到類似的任何其他可變參考類型
不錯。太棒了。完善。 – ram 2010-02-16 16:48:22
只是一個小小的錯誤:該領域是**保護**,而不是私人的,因此它從外部是絕對*可變的。我猜這個*是FXCop反對的。 – 2010-02-16 18:57:11
@Konrad魯道夫:很好!我只看了第一個關鍵字並注意到它不是訪問修飾符,因此必須默認爲默認(原文如此)。我沒有注意到關鍵字已被切換。 – 2010-02-16 19:29:42