2010-07-09 4 views
4

C# 형식 별칭/사용자 정의 유형

델파이에서

내가 새로운 유형을 decalared 한 ... C#을 일부 델파이 코드를 변환하려고 내가 문제가 건너 한

Type TData = Array of Extended 

곳 내가 intially 그때 정밀도를 변경하려면이 한 줄을 바꿀 수 Array of Single으로이 선언했다면 지금

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

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

처럼 문이 유형을 리턴하는 함수의 결과를 액세스 할 수 있습니다. (이 나는 어떤 결과를 정확히 C# 버전을 일치하도록 Double로 낮추기 위해 곧해야 할 수 있습니다.

을 그래서 질문은 내가

class Data : Double[] 

아니지만 같은 C#에서 비슷한? 뭔가를 할 수 정확하게 당신은 클래스에서 더블의 배열을 포장하고 그것을 위해 인덱스 속성을 제공 할 수는 컴파일되지 않기 때문에이 좋아, 아니면

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

죄송합니다, 이해가 안가. 함수의 반환 데이터 형식은 무엇입니까? –

+1

그는 'typedef'를 원합니다. – SLaks

+0

@SLaks : 고마워! –

답변

2

할 것입니다.

+0

+1 구성이 상속되지 않습니다. – rtalbot

5

C에서 얻을 수있는 가장 가까운 것은

using DataEntry = System.Double; 

입니다. 각 파일의 맨 위에 넣으십시오.

+0

'double'은 실제로'DataEntry'보다 더 짧고 명확합니다. 그래서 이것을하는 것이 의미가 없지만, 타입 별명 구문을 제공하기 위해 +1합니다. –

+2

@Darin, 정의의 단일 포인트의 이점이 있습니다. –

+0

아마 DataEntry는 별칭이고 double은 아닙니다. 여러 곳에서 더블을 사용한다면 많이 변경해야합니다. 많은 곳에서 DataEntry를 사용한다면 위의 행만 변경하면됩니다. 비록 내가 이것을 많이하지 않았기 때문에 잘못되었을 수도 있습니다 ... – Chris

1

C/C++ typedef과 비슷한 것을 원하는 것처럼 들리지만 불행히도 C#에서 지원되지 않는다고 생각됩니다. 단일 소스 파일 내에서 로컬 별칭을 만들 수 있지만 (아래 참조) 별칭은 다른 곳에서는 볼 수 없습니다.

는 로컬 별칭을 만들 소스 파일의 상단에이를 추가하려면

using Data = System.Double; 
1

아니, C#을 그 일의 직접적인 방법이 없습니다.

당신은 그러나 제네릭 클래스에 (그것을 사용하는 모든 또는 대부분의 코드) 해당 배열 포장 수 :

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

}