IDictionary 인터페이스의 필요성. 어떻게 IDictionary 인터페이스를 초기화 할 수 있습니다. 결국 그것은 단지 인터페이스 일뿐입니다. 다음 코드 스 니펫은 msdn에서 제공됩니다. 나는 그것을 이해할 수 없었다.IDictionary 인터페이스의 용도
IDictionary<string, string> openWith = new Dictionary<string, string>();
IDictionary 인터페이스의 필요성. 어떻게 IDictionary 인터페이스를 초기화 할 수 있습니다. 결국 그것은 단지 인터페이스 일뿐입니다. 다음 코드 스 니펫은 msdn에서 제공됩니다. 나는 그것을 이해할 수 없었다.IDictionary 인터페이스의 용도
IDictionary<string, string> openWith = new Dictionary<string, string>();
사전에 구현해야하는 중요 functions을 정의합니다.
MSDN에서
라인은 개체 IDictionary 인터페이스에 정의 된 함수 (방식)를 구현 openWith을 만드는 것을 의미한다.Dictionary<string,string> openWith=.....;
당신이 객체의 구체적인 유형 바인드 있습니다
당신이 좋아하는 변수를 선언하기 위해 사전을 사용
. 하지만IDictionary<string,string> openWith=....;
를 사용할 때 IDictionary인터페이스를 구현하는 객체로 사용할 수 있습니다, 인터페이스의
요점이 제공하는 것입니다 :) 아마 사용자 정의 클래스 ... 음 , 어떤 모듈 (여기서는 넓은 의미에서 "모듈"을 사용합니다)에 대한 인터페이스를 제공하므로 호출 코드는이 특정 인터페이스가 어떻게 구현되는지에 대해 걱정할 필요가 없습니다.
"어떻게 IDictionary
인터페이스를 초기화 할 수 있습니까?"라는 말은 기술적으로 올바르지 않습니다. 초기화 할 수있는 변수는 유형이 IDictionary<T, V>
입니다. 물론 충분한 변수를 초기화해야하지만 대개 "클라이언트 코드"에서 숨겨집니다.
IDictionary
은 그다지 대표적인 것은 아닙니다. 오히려 IDataReader
인터페이스를 고려하십시오. 당신은 확실히 ADO.NET 처리, 그래서이 익숙 할 것이다 :
public Foo PopulateFromDataReader(SqlDataReader dataReader)
이 특별한 방법은 단단히 SqlDataReader
에 연결되어, 당신이 그것을 지원하는, 말, 액세스하거나 그것을 다시 작성해야 할 것이다 그래서 오라클 또는 MySQL 또는 파이어 버드 또는 기타. 즉, 구현에 의존합니다.
지금 생각해
public Foo PopulateFromDataReader(IDataReader dataReader)
이 방법은 기본적으로 어떤 ADO.NET 호환 데이터 공급자와 의미 IDataReader
를 구현하는 어떤 클래스와 함께 사용할 수 있습니다.
다른 인터페이스와 다를 바 없습니다. 보다 간단한 예제를 생각해보십시오.
interface IThermometer
{
double CurrentTemperature { get; }
}
온도를 측정하는 방법은 있지만 정확한 측정 방법은 없습니다.
class MercuryThermometer : IThermometer
{
public double CurrentTemperature
{
get { return ... /* gets the temperature somehow */ }
}
}
나머지 프로그램은 어떤 온도계를 사용하는지 알 필요가 없습니다.
+1 ... –
난 당신이 단순히 IDictionary<,>
(인터페이스)로 입력 변수의 차이를 간과 한 의심하고 Dictionary<,>
로 초기화 값 (참조) (더 I
주의 없으며 구체적인 유형).
단위 테스트에도 유용합니다. 사전 대신 IDictionary를 허용하고 모의를 전달하는 메서드에 대한 단위 테스트를 작성할 수 있습니다. 클래스 인스턴스 (봉인 될 수도 있음)를 수락한다면 약간 조이가 듭니다 (어댑터 패턴 등을 사용해야 할 것입니다).
+1 아주 좋은 예입니다. :) 당신이 나를 혼란스럽게 만드는 diff를 제거했습니다. 훌륭한 예입니다. 이 예에서는 –