编译器不会对Linq中使用的过时属性引发错误

时间:2010-11-09 10:43:03

标签: c# .net linq

不知何故,当我在VS 2008中编译它时,它不会引发错误,有没有办法标记它,所以它确实引发错误?

namespace ConsoleApplication1
{
    public class Program
    {
        static void Main(string[] args)
        {
            Program[] programs = null;

            var result = programs.Where(p => p.Value.Length == 0);
        }

        [Obsolete("Do not use", true)]
        public string Value { get; set; }
    }
}

此代码无论如何都不会运行但是它应该在编译时引发错误,如果你只是p.Value它会将它标记为过时但在添加.Length或任何时候以某种方式忽略它其他财产/方法

1 个答案:

答案 0 :(得分:2)

您使用的是哪个版本的Visual Studio?我刚刚尝试使用C#4编译器编译代码,并得到了这个:

Test.cs(12,42): error CS0619: 'Program.Value' is obsolete: 'Do not use'

我想知道这是否是C#3编译器(随VS2008 / .NET 3.5一起提供)中的一个错误,该错误是为C#4编译器修复的。