例如,我有下面这样的一个类:
public class a
{
public string _name;
[property: CLSCompliant(false), Obsolete("该淘汰了")]
public string name { get { return _name; } set { _name = value; } }
public string methoda(string s){_name =s;return _name;}
public a(string s){Console.WriteLine("ctor {0}",s);}
[Obsolete("能否产生编译警告")]
void f() { }
}
这里一个属性name一个方法f都有Obsolete特性修饰,但是并没有因此产生编译警告啊。我是编译的debug/release版,发现一样
那么这个Obsolete何时才能产生编译时的某种警告呢?
------解决思路----------------------
要调用Obsolete成员,才会产生警告。
static void Main(string[] args)
{
string name = new a("").name;
}
之所以用Obsolete,而不直接去掉,是为了保此对旧版本的支持。
Obsolete成员的存在本身是有意义的。
不应该对有意义的存在产生警告。
------解决思路----------------------
+1