Почему свойства набора C# не отмечаются как устаревшие при вызове свойств на них?

Я нашел проблему. Пожалуйста, обновите ваш запрос, используя предоставленный мной

 $sql = "INSERT INTO items (image, Description) VALUES ('".$name."', '".$image."')";
13
задан angry person 16 November 2010 в 09:57
поделиться

3 ответа

Хм... похож на ошибку компилятора мне! Это приводит следующее к сбою (ECMA 334v4):

24.4.3 Устаревший атрибут Устаревший атрибут используется для маркировки типов и членов типов, которые больше не должны использоваться. Если программа будет использовать тип или участника, который украшен Устаревшим атрибутом, то компилятор должен выдать предупреждение или ошибку для предупреждения разработчика, таким образом, незаконный код может быть исправлен. А именно, компилятор должен выдать предупреждение, если никакой параметр ошибок не будет обеспечен, или если параметр ошибок обеспечивается и имеет ложь значения. Компилятор должен выпустить ошибку времени компиляции, если параметр ошибок будет указан и будет иметь верное значение.

В частности, при верной маркировке, что это должно выпустить ошибку, и это не делает. Хорошая находка! Вы могли сообщить об этом относительно "подключения", или если Вы не хотите боли установки входа в систему, сообщите мне, и я счастливо зарегистрирую его (ссылка на Ваше сообщение здесь; никакая попытка "украсть" что-либо).

(обновление)

Уменьшенный код для репродуцирования:

using System;
using System.Collections.Generic;
static class Program {
    static void Main() {
        int count = Test.Count;
    }

    [Obsolete("Should error", true)]
    public static List<string> Test {
        get {throw new NotImplementedException();}
    }
}

Обратите внимание, что моно 2.0 разбираются в нем, как делает компилятор C# 2.0 MS. Это - только MS C# 3.0 (.NET 3.5) компилятор, который повреждается.

14
ответ дан 1 December 2019 в 19:23
поделиться

Это - подлинная ошибка. К сожалению, из-за рефакторинга моются, который пропустил этот случай. Я зафиксировал это для релиза компилятора C# 4.0, подходящего в VS 2010/АРИФМЕТИЧЕСКИЙ ПРОЦЕССОР 4.0, но нет никаких планов зафиксировать его теперь у Косаток и к сожалению нет никакой работы вокруг, я знаю об иметь дело с этим.

Я очень не хочу сказать это, но необходимо будет обновить до АРИФМЕТИЧЕСКОГО ПРОЦЕССОРА 4 csc.exe или VS2010, когда они станут доступными для устранения этой проблемы.

Я думаю о размещении записи в моем свежем новом блоге MSDN об этом. Делает хороший анекдотический пример того, как рефакторинг может взломать Ваш код.

Ian Halliday

Компилятор C# SDE
Microsoft

18
ответ дан 1 December 2019 в 19:23
поделиться

Я соглашаюсь с Marc: это похоже на ошибку компилятора. Интересно, gmcs (Моно компилятор C#) разбирается в нем:

Test.cs(65,26): warning CS0219: The variable `list' is assigned but its value is never used
Test.cs(62,38): warning CS0612: `TestApp.BaseClass.Value' is obsolete
Test.cs(63,38): warning CS0612: `TestApp.BaseClass.ValueArray' is obsolete
Test.cs(64,38): warning CS0612: `TestApp.BaseClass.ValueList' is obsolete
Test.cs(65,36): warning CS0612: `TestApp.BaseClass.ValueList' is obsolete
Compilation succeeded - 5 warning(s)
4
ответ дан 1 December 2019 в 19:23
поделиться
Другие вопросы по тегам:

Похожие вопросы: