이 경우 DataContainer 생성자는 인수가 필요하지 않으며 새 기능의 변수에 의해 인스턴스화가 영향을받지 않으므로 해당 함수를 완전히 제거 할 수 있습니다. 당신은 개인 DB 변수의 선언시 DataContainer의 인스턴스 수 :
namespace SPI {
class CompaniesDB
{
private DataContainer db = new DataContainer();
public Company Select(int companyID) {
return this.db.Company_Get(companyID).SingleOrDefault();
}
}
}
편집, 마이크 졸리는의 요청에 따라 추가 정보 :
이 정말 취향까지이며, 두 솔루션이 작동하고 안전됩니다.
namespace SPI {
class CompaniesDB
{
private DataContainer db;
public CompaniesDB()
{
db = new DataContainer();
}
public Company Select(int companyID) {
return this.db.Company_Get(companyID).SingleOrDefault();
}
}
}
이 코드는 좋다, 당신은 참조 DB를 변수에 할당됩니다 DataContainer의 인스턴스를 만들 :
는 다음과 같은 코드를 사용할 수 있습니다. db 변수를 사용하기 시작할 때 db 변수가 참조를 포함하는지 확인 중입니다.
그러나이 인스턴스는 항상 동일하므로 생성자 내에서 할당을 제거하고 기본적으로 일반 DataContainer를 만들 수 있습니다. 이것은 또한 변수가 항상 CompaniesDB 객체의 인스턴스화시 DataContainer에 대한 참조가 포함되어 있는지 확인합니다 :
namespace SPI {
class CompaniesDB
{
private DataContainer db = new DataContainer();
public Company Select(int companyID) {
return this.db.Company_Get(companyID).SingleOrDefault();
}
}
}
DataContainer 생성자 인수했다 경우 생성자의 필요성이 명확 다음과 같습니다
namespace SPI {
class CompaniesDB
{
private DataContainer db;
public CompaniesDB(string name)
{
db = new DataContainer(name);
}
public Company Select(int companyID) {
return this.db.Company_Get(companyID).SingleOrDefault();
}
}
}
을
인수가 도입되면 생성자에서 DataContainer 인스턴스를 만드는 것이 더 좋습니다.
"this"없이 시도해 보셨습니까? 접두사? 나는 그것이 클래스 변수로 선언되었으므로 당신이 필요로한다는 것을 완전히 확신하지 못한다. 또한 spi.CompaniesDB 변수를 선언 할 때 New() 선언을 사용하고 있습니까? (VB에 해당하는 예제) enterprisesDB = new CompaniesDB()와 같이 myDB를 흐리게 처리합니다. 단지 2 센트. – Tommy
@Tommy - Mike의 문제는 'this'참조를 사용하는 것과 관련이 없습니다. @ Moron의 대답을보십시오. –
@ 토미 :'this.' 지정자는 필요하지 않지만 'db'라는 이름의 스코프에 다른 것이 없기 때문에 거기에 아무런 변화가 없습니다. – Guffa