4 Stimmen

Compiler löst bei einer veralteten Eigenschaft, die in Linq verwendet wird, keinen Fehler aus

Irgendwie, wenn ich dies in VS 2008 kompilieren es nicht einen Fehler auslösen, gibt es eine Möglichkeit, es zu markieren, so dass es einen Fehler auslösen?

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; }
    }
}

Dieser Code wird sowieso nicht ausgeführt, aber er sollte beim Kompilieren einen Fehler auslösen, er markiert ihn als veraltet, wenn Sie einfach p.Value aber ignoriert es irgendwie, wenn Sie die .Length oder jede andere Eigenschaft/Methode

2voto

Jon Skeet Punkte 1325502

Welche Version von Visual Studio verwenden Sie? Ich habe gerade versucht, Ihren Code mit dem C# 4-Compiler zu kompilieren, und erhielt dies:

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

Ich frage mich, ob dies ein Fehler in der C# 3 Compiler (Lieferung mit VS2008 /.NET 3.5), die für die C# 4 Compiler behoben wurde.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X