Нужен пример реализации функции для члена интерфейса массива - PullRequest
1 голос
/ 09 марта 2010

У меня есть такой интерфейсный элемент.

AppInterface.cs

ObjLocation[] ArrayLocations { get; }

App.cs

public ObjLocation[] ArrayLocations
        {
            get
            {
                 return **something**;
            }
        }

Я не знаю, как это сделать, или есть другой способ реализовать элементы массива.

Тогда может пройти компилятор. спасибо.

Ответы [ 2 ]

2 голосов
/ 09 марта 2010

Ну, вы бы просто вернули массив:

public ObjLocation[] ArrLocations 
{
    get
    {
         ObjLocation[] locations = new ObjLocation[10];
         // Fill in values here
         return locations;
    }
}

Или, если у вас уже есть List<ObjLocation>, вы можете сделать:

public ObjLocation[] ArrLocations 
{
    get
    {             
         return locationList.ToArray();
    }
}

Трудно понять, что предложить вам написать для тела свойства, когда мы не знаем, для чего предназначено свойство или какие у вас есть данные.

Одна вещь, которую вы должны очень внимательно рассмотреть , - это то, что происходит, если вызывающая сторона изменяет содержимое массива. Если у вас есть массив в вашем классе, и вы просто возвращаете ссылку на него, то вызывающая сторона может связываться с вашими данными - что , вероятно, не то, что вы хотите. Нет способа вернуть массив «только для чтения», потому что такого понятия нет - и это одна из причин, по которой они считают несколько вредными . (Было бы лучше, если бы интерфейс указывал, что вы должны вернуть IList<ObjLocation> или IEnumerable<ObjLocation>.)

Если этого недостаточно для решения вашей проблемы, просьба дать больше информации.

1 голос
/ 09 марта 2010

return new ObjLocation[size] или return new ObjLocation[] { objLocationInstance1, objLocationInstance2, ... }

...