c # Тип Псевдоним / Пользовательский тип - PullRequest
4 голосов
/ 09 июля 2010

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

В Delphi я удалил новый тип

Type TData = Array of Extended

где я могу получить доступ к результату функций, возвращающих этот тип, с помощью операторов типа

Function TMyObject.ReadData:TData;
begin
...
end;

Data := MyObject.ReadData;
Result = Data[7] + Data[12]

Теперь, если бы я изначально объявил это как Array of Single, тогда я мог бы изменить эту строку, чтобы изменить точность. (что мне, возможно, придется сделать в ближайшее время, чтобы снизить его до Double, чтобы любые результаты точно соответствовали версии c #.

поэтому вопрос в том, могу ли я сделать нечто подобное в c #? что-то вроде

class Data : Double[]

хотя не совсем так, поскольку он не компилируется, или я бы сделал

class DataEntry : Double
...
public DataEntry[] Read
{
...
}

Ответы [ 4 ]

5 голосов
/ 09 июля 2010

Самое близкое, что вы можете получить в C #, это

using DataEntry = System.Double;

Поместите это в верхнюю часть каждого файла.

2 голосов
/ 09 июля 2010

Вы можете заключить в массив массив Double и предоставить ему индексные свойства.

1 голос
/ 09 июля 2010

Нет, C # не имеет прямого способа сделать это.

Однако вы можете обернуть этот массив (и весь или большую часть кода, который его использует) в общий класс:

class MyClass<T>
{
   private T[] Mydata;

}
1 голос
/ 09 июля 2010

Звучит так, будто вы хотите что-то похожее на C / C ++ typedef, которое, к сожалению, я не думаю, поддерживается в C #. Вы можете создать локальный псевдоним в одном исходном файле (см. Ниже), но этот псевдоним больше нигде не будет виден.

Чтобы создать локальный псевдоним, добавьте его в начало вашего исходного файла:

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