저는 초심자이고 학교 숙제를하고 있는데 여러 권의 책을 만들어서 목록에 넣은 다음 내 수업의 방법을 사용하여 다른 기능에서 목록을 인쇄하고 싶습니다.
이것은 나의 수업 목표입니다
class Knjiga
{
public string Naslov;
public string Avtor;
public int StStrani;
public int LetoIzdaje;
public bool NaVoljo;
public Knjiga(string aNaslov, string aAvtor, int aStStrani, int aLetoIzdaje, bool aNavoljo)
{
Naslov = aNaslov;
Avtor = aAvtor;
StStrani = aStStrani;
LetoIzdaje = aLetoIzdaje;
NaVoljo = aNavoljo;
}
public void Izpisi()
{
Console.WriteLine(Naslov + ", " + Avtor + ", " + LetoIzdaje);
}
이것은 내 메인에 있습니다.
static void Main(string[] args)
{
Knjiga knjiga1 = new Knjiga("East of Eden", "John Steinbeck", 601, 1952, true);
Knjiga knjiga2 = new Knjiga("From here to eternity", "James Jones", 861, 1951, true);
Knjiga knjiga3 = new Knjiga("The Lord of the Rings", "J.R.R. Tolkien", 1200, 1954, true);
List<Knjiga> knjigaList = new List<Knjiga>
{
knjiga1, knjiga2, knjiga3
};
foreach (var i in knjigaList)
i.Izpisi(); //THIS ONE WORKS
Test(knjigaList);
Console.ReadLine();
}
이것은 나의 다른 테스트 기능입니다
static void Test<T>(List<T> test)
{
foreach (var i in test)
i.Izpisi(); // THIS ONE CAN'T ACCESS THE METHOD
main ()에서 foreach를 사용하면 메서드가 작동하지만 주 메서드 외부에 목록을 전달하려고하면 더 이상 클래스 메서드를 호출 할 수 없습니다. "T"에 "Izpisi"에 대한 정의가 포함되어 있지 않으며 "T"유형의 첫 번째 인수를 허용하는 액세스 가능한 확장 메서드 "Izpisi"를 찾을 수 없습니다. 여기서 무엇을 할 수 있습니까?
이 컴파일을 만드는 데는 몇 가지 방법이 있지만 왜 이런 식으로 수행하는지 다시 한 번 살펴볼 수 있습니다.
주석에서 말했듯이 다음 목록을 지정할 수 있습니다 Knjiga
.
static void Test(List<Knjiga> test)
{
foreach (var i in test)
i.Izpisi();
}
다음과 같이 조건 T
을 지정할 수도 있습니다 Knjiga
.
static void Test<T>(List<T> test) where T : Knjiga
{
foreach (var i in test)
i.Izpisi();
}
그러나 다시 말하지만 두 번째는 하나만 있기 때문에 실제로 의미가 없습니다 Kjniga
. 당신은 필요합니까 interface
; 상속 구조가 있습니까?
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다