Efficient C\#: 왜 범 형 을 반환 값 으로 합 니까?
최근 에 범 형 반환 값 에 관 한 문 제 를 풀 었 더 니:
1: 많은 사람들 이 잘못 했다.
2: 많은 사람들 이 범 형 이 반환 치 로 서 어떤 의미 가 있 는 지 의문 이다.
제목 은 다음 과 같다.
"함 수 를 만 듭 니 다. 입력 을 요구 하 는 인자 와 출력 결 과 는 모두 일반적인 것 입 니 다."
(PS: 댓 글 에서 문제 자체 에 문제 가 있다 는 지적 이 있 습 니 다. 더 적합 한 설명 은 함 수 를 만 드 는 것 입 니 다. 입력 매개 변수 와 반환 값 을 요구 하 는 유형 은 모두 일반적인 형식 매개 변수 입 니 다)
전형 적 인 잘못된 대답 중 하나:
public List<T> Function<T, U>(U parameter)
{
return new List<T>();
}
전형 적 인 오 답 의 두 번 째:
void GetList<T>(ref T t1, out T t2) where T : List<T>
{
t2 = t1;
}
잘못된 대답 1 은 범 형 을 생각하면 많은 사람들 이 집합 을 생각 하기 때문이다. 그래, 범 형 집합 은 범 형의 중요 한 응용 장면 이지 만 이것 은 범 형 자체 와 무슨 관계 가 있 는가.
많은 사람들 이 자 연 스 럽 게 두 번 째 의문 을 제기 합 니 다. 그러면 팬 형 을 반환 값 으로 하 는 것 이 무슨 의미 가 있 습 니까? 우 리 는 먼저 아래 의 예 를 살 펴 보 겠 습 니 다.
public T GetActivatedServer<T>(NetIdentity netIdentity, string name)
{
string url = netIdentity.GetRemoteBaseUrl() + name;
object service = Activator.GetObject(typeof(T), url);
return (T)service;
}
이것 은 remoting 의 한 예 입 니 다. 완 성 된 기능 은 원 격 대상 의 인 스 턴 스 를 되 돌려 주 는 것 입 니 다.만약 범 형 이 없다 면, 우 리 는 모든 원 격 대상 의 실례 를 만 들 기 위해 하나의 방법 을 세 워 야 하 며, 범 형 이 생기 면 이 문 제 를 쉽게 해결 할 수 있다.(PS: 이 글 은 타당 하지 않 습 니 다. 댓 글 에서 '범 형 이 없 을 때 우 리 는 Type 을 전달 하고 밖에서 유형 전환 을 강제 할 수 있 습 니 다' 라 고 지적 하 였 습 니 다. 그래서 본 글 에서 말 한 '이 문 제 를 해결 합 니 다' 중의 이 문 제 는 인 코딩 이 더욱 적 고 아름 다 우 며 '범 형 을 사용 하 는 것 이 효율 적 이 고 유형 이 안전 하 다' 는 것 을 말 하 는 것 이 아 닙 니 다.)
호출 된 코드 는:
IClientContract client = RemoteObjectManager.Manager.GetActivatedServer<IClientContract>(target, "Client");
또한 LINQ 에 대해 잘 알 고 계 신다 면 LINQ 에서 도 일반적인 반환 값 을 사용 하 는 방법 이 적지 않 을 것 입 니 다. 유용 한 집합 방법 Find 를 들 어 보 겠 습 니 다. 다음은 이 방법의 표준 실현 (. NET 내부 코드) 입 니 다.
public T Find(Predicate<T> match)
{
if (match == null)
{
ThrowHelper.ThrowArgumentNullException(ExceptionArgument.match);
}
for (int i = 0; i < this._size; i++)
{
if (match(this._items[i]))
{
return this._items[i];
}
}
return default(T);
}
표준 호출 코드:
MarshalByRefObject marshal = ObjRefList.Find(target =>
{
return target.GetType() == obj.GetType();
});
마지막 으로 본 문제 의 정 답 을 동봉 합 니 다.
TResoult GetT<TResoult, T1>(T1 t)
{
//some biz code
return default(TResoult);
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.