如果方法在类之外使用,有没有办法生成编译器警告,但是如果在类中使用它则没有?
原因:类有一些基本行为可以在除少数方法过载情况之外的所有方法中提前完成。这个想法就是说,这样做很好,但是你需要注意一些关于这个课程如何运作的事情。
答案 0 :(得分:4)
如果方法只是在一个类中调用,请将其设为private
。
如果您尝试从外部调用它,这将导致编译失败并显示错误(不是警告)。
答案 1 :(得分:2)
一种方法是使用#pragma
指令。
在使用'raw'方法的班级中,在顶部添加以下行:
#pragma warning disable 0612
使用[Obsolete()]属性标记“原始”方法。
只要您的类是使用pragma指令在文件中声明的唯一类,对该类中的raw方法的任何调用都不会引发编译器警告。从其他类(文件)调用仍然会引发类似于此的编译器警告:
C:\项目\ ConsoleApplication1 \ ConsoleApplication1 \ Program.cs的(13,13): 警告CS0612:'ConsoleApplication1.Class1.Test()'已过时
e.g。
Program.cs的
using System;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
Class1 c = new Class1();
c.Test(); // call the raw method but with a compiler warning
}
}
}
的Class1.cs
#pragma warning disable 0612
using System;
namespace ConsoleApplication1
{
class Class1
{
[Obsolete()]
public void Test()
{
// the 'raw' method
}
private void CallTest()
{
Test(); // call the raw method without a compiler warning
}
}
}
编译时,我在Program.cs中收到一个编译器警告,而不是在Class1.cs
中健康警告 - 这将暂停对Class1内的调用的编译器警告,以及其他类中的过时方法。
答案 2 :(得分:0)
您可以使用[Obsolete]
属性,但每次在课堂上或课堂外使用时都会显示警告。在过时的消息中,您可以解释其他详细信息。