этот. Тип зарезервирован?Должен быть сообщен - PullRequest
1 голос
/ 13 августа 2010

Вчера я обнаружил, что у меня не может быть класса, который использует поле с именем "Type", это, вероятно, зарезервировано.

Хотя поле может быть зарезервировано, вы все равно не можете установить anyObject.Type, если в нем нет поля Type, определенного как открытая строка. Игнорирование любых методов получения и установки и переход непосредственно к изменению YourObject на «любую» строку.

Попробуйте сами. Определите поле Тип и попробуйте установить его.

Об этом следует сообщить в Microsoft, чтобы никто не использовал «Тип» в качестве поля в будущем, и при попытке его определить нет никаких предупреждений / ошибок.

        public Point_Extended(Point p, booking b)
        {
            this.ID = p.ID;
            this.Type = p.Type;
            this.Status = p.Status;
            this.Size = p.Size;
            this.Coords = p.Coords;
            this.Color = p.Color;
            this.BuildingID = p.BuildingID;

            this.Login = b.Login;
            this.Starts = b.Starts;
            this.Hours = b.Hours;
            this.BookingID = b.ID;
        }

Ответы [ 3 ]

4 голосов
/ 13 августа 2010

Если есть неопределенность имени - просто используйте this.Type / obj.Type (экземпляр), TypeName.Type (статический) или System.Type (тип).Или в действительно неприятных случаях global::System.Type.Это работает очень хорошо и соответствует вопросу (я думаю):

static class Program
{
    static void Main() {
        Test anyObject = new Test();
        anyObject.Type = "abc";
    }
}
class Test
{
    public string Type;
}
0 голосов
/ 16 августа 2010

Nevermind.

Именно представление переопределения ToString () сбило меня с толку, когда я подумал, что тип был изменен.

0 голосов
/ 13 августа 2010

Вы определяете «Тип» в области видимости, локальной для вашего класса, например,

class SomeClass
{
    public string Type { get; set; }
}

, а затем использовать его в каком-то методе этого класса, например

class SomeClass
{
    public string Type { get; set; }

    public void DoSomeStuff()
    {
        Type = "Foo";
    }
}

Это неоднозначно между «Типом» в SomeClass (свойство) и «Типом» в пространстве имен System (тип).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...