1

我已經在規則集中打開CA1007作爲錯誤。然後我寫了下面的代碼來違反這個規則,但它仍然沒有將其檢測爲Warning或Error。不知道我在哪裏犯錯,它是在代碼中還是在規則集中?Visual Studio 2010中的代碼分析警告 - CA1007

class Program 
{ 
    public static void Swap(ref object object1, ref object object2) 
    { 
     object temp = object1; 
     object1 = object2; 
     object2 = temp; 
    } 

    static void Main(string[] args) 
    { 
     string string1 = "Swap"; 
     string string2 = "It"; 

     object object1 = (object)string1; 
     object object2 = (object)string2; 
     Program.Swap(ref object1, ref object2); 
     string1 = (string)object1; 
     string2 = (string)object2; 
     Console.WriteLine("{0} {1}", string1, string2); 

     Console.ReadLine(); 
    } 
} 

有什麼建議嗎?謝謝!

+2

這些方法位於私有類中,通常它們不受API規則的限制(因爲該方法不是公共API)。儘量讓課堂公開。還要確保你正在編譯時沒有優化這樣的方法(特別是當私有的)migth被編譯器優化掉時,導致代碼分析無法找到它。 – jessehouwing

+0

從[CA1007的文檔](http://msdn.microsoft.com/en-GB/library/ms182179.aspx):*「一個**外部可見**方法包含一個System.Object類型的引用參數,而包含程序集的目標是.NET Framework 2.0。「* –

+0

@jessehouwing:謝謝你,工作!另外,你是什麼意思「確保你沒有優化編譯」,我該怎麼做? – inspiringmyself

回答

1

由於Program是一個私有類(它沒有修飾符,所以它默認爲私有),公共靜態方法從外部不可見。 CA1007旨在確保公共API使用良好的簽名,但內部,私有和其他不可見的方法免於此規則。

相關問題