Комментарии XML для двумерного массива, допускающего значение NULL

Как правильно указать XML-комментарии для двумерного массива нулевых двойников? Следующее дает мне синтаксическую ошибку.

/// <returns>The <see cref="double[,]"/>.</returns>
public double?[,] Get2DArray()
{
    ...
}

Если бы это был просто двумерный массив двойников, я бы использовал:

/// <returns>The <see cref="double{T,T}]"/>.</returns>
public double[,] Get2DArray()
{
    ...
}

и если бы было только одно значение, которое я бы использовал:

/// <returns>The <see cref="Nullable{Double}"/>.</returns>
public static double? GetNullableDouble()
{

Кажется, я не могу совместить эти две концепции, чтобы получить правильные комментарии.


person openshac    schedule 14.04.2014    source источник
comment
Многомерный массив не является универсальным, поэтому я не понимаю вашего вопроса. В более общем случае используйте зубчатый массив (double?[][]). Реализация зубчатых массивов в .net лучше во многих отношениях.   -  person Jodrell    schedule 14.04.2014
comment
Комментарий XML.... дает мне синтаксическую ошибку Комментарии XML дают синтаксическую ошибку! Я не понимаю.   -  person Bit    schedule 14.04.2014
comment
Когда я навожу указатель мыши на текст [,], всплывающая подсказка говорит о синтаксической ошибке.   -  person openshac    schedule 14.04.2014


Ответы (2)


Прочитав здесь, возможно, вы захотите,

/// <summary>
/// Gets the 2D Array
/// </summary>
/// <returns>The <see cref="T:double?[,]"/>.</returns>
public double?[,] Get2DArray()
{
    ...
}

Как уже отмечалось, вместо многомерного массива (double?[,]) вы должны рассматривать что-то неровное, внутренняя реализация .Net лучше. Кроме того, если вы думаете об интерфейсах как об обещаниях, вы должны давать как можно меньше обещаний, их легче выполнять.

Возможно,

/// <summary>
/// Gets the 2D Array
/// </summary>
/// <returns>
/// The <see cref="T:IEnumerable{IEnumerable{double?}}"/> data.
/// </returns>    
public IEnumerable<IEnumerable<double?>> GetData()
{
    ...
}

будет достаточно.

person Jodrell    schedule 14.04.2014
comment
Когда я наводил курсор на T:double?[,] в заголовке функции, всплывающая подсказка говорит, что не удается разрешить символ «T:double?[,]». Однако подпись кажется правильной из вызывающего кода. - person openshac; 14.04.2014

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

Я просмотрел кучу основного источника .NET, чтобы узнать, используют ли какие-либо значения cref, которые говорят о массивах, какую-либо общую ссылку, и я ничего не нашел. Все, что использует <see cref="T:System.Array"/>.

Я бы порекомендовал вам использовать следующий формат:

<returns>The 2-dimentional <see cref="System.Array"/> of <see cref="System.Nullable{System.Double}" />.</returns>
person Anthony    schedule 14.04.2014