我有一个类,我使用单例模式。该课程看起来像
public class MessageAccess
{
private static MessageAccess instance;
public static MessageAccess Instance
{
get { return instance ?? (instance = new MessageAccess()); }
}
private MessageAccess()
{
}
public void Initialize(string data)
{
//...
isInitialized = true;
}
private bool isInitialized;
public void ReadData1()
{
// This Method can always be called
}
public void ReadData2()
{
// This Method can only be called, if Initialize was called. Otherwise an exception will be thrown
}
}
如果从不调用方法Initialize
答案 0 :(得分:2)
虽然我理解你的观点,但我不认为这样的警告会像你想象的那样方便。我担心.NET框架不能满足这种类型的警告,原因有两个明确的原因(请参阅此链接:http://blogs.msdn.com/b/csharpfaq/archive/2004/03/19/why-doesn-t-c-warn-about-unused-methods.aspx)。
有人可能认为缺少此功能是错失的机会,但事实并非如此。你的班级MessageAccess
是公开的,将被编译成(比方说)一个dll。即使您在编译dll时遇到此警告,在使用该dll的Initialize
方法(也是公共的)编译某些外部代码时,您也不希望它出现。你基本上不能保证没有其他代码会使用该方法,这是没有这个警告的更好理由之一。
答案 1 :(得分:1)
如果未在装配体外部使用该类,则可以将其设为internal
。在这种情况下,如果未调用该方法,代码分析将生成警告“避免未调用的私有代码”。