ich habe gerade einen kleinen Test mit Generics gemacht, jedoch bekomme ich nur einen Fehler, wenn ich die Liste übergeben will bzw. genau bei
List<string> myStringList = ToStringListConverter<List<int>>.ToYourList(numbers);
Woran liegt das ? List implementiert ja IEnumerable.
Code:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Test
{
class Program
{
static void Main(string[] args)
{
List<int> numbers = new List<int>
{
3,
6,
8
};
List<string> myStringList = ToStringListConverter<List<int>>.ToYourList(numbers);
}
static class ToStringListConverter<T> where T : IEnumerable<T>
{
public static List<string> ToStringList(T yourList)
{
List<string> result = new List<string>();
foreach (T item in yourList)
{
result.Add(item.ToString());
}
return result;
}
}
}
}
Also zunächst würde ich dir empfehlen, um Fehler zu vermeiden var zu verwenden.
heißt konkret statt
Code:
List<string> result = new List<string>();
solltest du
Code:
var result = new List<string>();
verwenden.
Code:
using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace Test
{
class Program
{
static void Main(string[] args)
{
var numbers = new List<int>
{
3,
6,
8
};
var myStringList = ToStringListConverter.ToStringList(numbers);
}
}
// Lösch den Quatsch mit T .. und IEnumerable brauchst du auch nicht
static class ToStringListConverter
{
public static List<string> ToStringList(IList yourlist)
{
var result = new List<string>();
foreach (var item in yourlist)
{
result.Add(item.ToString());
}
return result;
}
}
}
Edit:
Mir ist aufgefallen, dass du IEnumerable ja gar nicht vererben musst
Also zunächst würde ich dir empfehlen, um Fehler zu vermeiden var zu verwenden.
heißt konkret statt
Code:
List<string> result = new List<string>();
solltest du
Code:
using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace Test
{
class Program
{
static void Main(string[] args)
{
var numbers = new List<int>
{
3,
6,
8
};
var myStringList = ToStringListConverter.ToStringList(numbers);
}
}
// Lösch den Quatsch mit T .. und IEnumerable brauchst du auch nicht
static class ToStringListConverter
{
public static List<string> ToStringList(IList yourlist)
{
var result = new List<string>();
foreach (var item in yourlist)
{
result.Add(item.ToString());
}
return result;
}
}
}
Edit:
Mir ist aufgefallen, dass du IEnumerable ja gar nicht vererben musst
Moin,
warum sollte ich var verwenden in diesem Fall ? Wenn ich List<string> direkt ausschreibe, dann sehe ich ja , falls ein Fehler auftritt , weil mir das VS anzeigt. Bei var treten meiner Meinung nach in diesem Fall ja eher Fehler auf, wenn ich mich z.B. auf der rechten Seite, wo List<string> steht, verschreibe.
Ich möchte nicht überprüfen, ob es von einem Interface ableitet, ich möchte es generisch haben, das war nur ein Test von mir und die Funktion wird in der Praxis sowieso nicht verwendet, ich will nur wissen, wo der Fehler lag
warum sollte ich var verwenden in diesem Fall ? Wenn ich List<string> direkt ausschreibe, dann sehe ich ja , falls ein Fehler auftritt , weil mir das VS anzeigt. Bei var treten meiner Meinung nach in diesem Fall ja eher Fehler auf, wenn ich mich z.B. auf der rechten Seite, wo List<string> steht, verschreibe.
Ich möchte nicht überprüfen, ob es von einem Interface ableitet, ich möchte es generisch haben, das war nur ein Test von mir und die Funktion wird in der Praxis sowieso nicht verwendet, ich will nur wissen, wo der Fehler lag
Naja erfahrungsgemäß kann ich sagen, dass ich mehr Fehler mach, wenn ich es ausschreib (mehr zu schreiben, vor allem mit den spitzen "ungewöhnlichen" Klammern, die man ja selten eingibt)
Wenn du es generisch haben willst, würde ich dir empfehlen mal weiter im Internet zu suchen, wie du das mit List<T> machst..
static class ToStringListConverter<T> where T : IEnumerable<T>
Einfach zu
Code:
public static class ToStringListConverter<T> where T : IEnumerable<T>
machen.
p.s. wenn ein Fehler vorhanden ist, dann bitte immer die Fehlermeldung mitschicken. Sonst kann man raten was der Fehler sein könnte.
Vielen Dank für die schnelle Antwort.
Das ist leider nicht der Fehler :
Code:
Schweregrad Code Beschreibung Projekt Datei Zeile Unterdrückungszustand
Fehler CS0311 Der Typ "System.Collections.Generic.List<int>" kann nicht als Typparameter "T" im generischen Typ oder in der generischen Methode "Program.ToStringListConverter<T>" verwendet werden. Es ist keine implizite Verweiskonvertierung von "System.Collections.Generic.List<int>" in "System.Collections.Generic.IEnumerable<System.Collections.Generic.List<int>>" vorhanden. ConsoleApp33 c:\users\torge\documents\visual studio 2017\Projects\ConsoleApp33\ConsoleApp33\Program.cs 19 Aktiv
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Test
{
class Program
{
public static void Main(string[] args)
{
List<int> numbers = new List<int>
{
3,
6,
8
};
List<string> myStringList = ToStringListConverter<List<int>>.ToStringList(numbers);
foreach(var item in myStringList)
Console.WriteLine(item);
}
static class ToStringListConverter<T> where T : IEnumerable<int>
{
public static List<string> ToStringList(T yourList)
{
List<string> result = new List<string>();
foreach (var item in yourList)
{
result.Add(item.ToString());
}
return result;
}
}
}
}
Wobei das halt grundsätzlich Schwachsinn ist und du die Funktionen überladen solltest.
Biete Mathehilfe bis zur 10. Klasse Real/ 9.Klasse Haupt 03/13/2012 - School & Education - 0 Replies Wenn ihr Probleme mit einer aufgabe habt, schickt mir eine PM. Kostet nur 1eGold. Vielleicht auch nichts :D Kommt ganz auf die aufgaben drauf an.
Volkswechsel alte Klasse(Classic)->neue Klasse(Cata) 01/30/2011 - World of Warcraft - 13 Replies Hi,
Ich würde meinen Untoten Magier gerne zu einem Goblin Magier verändern.
Ich weis auch, dass Goblins Magier sein können aber ich finde keine 100% sicheren Infos ob man auch Untoter->Goblin changen kann!
Kennt sich da einer aus?
Außerdem wird ja der Ruf der alten Heimatstadt auf die neue gewechselt, also sollte in meinem Fall doch nur von Unterstadt->Goblinstadt geändert werden oder?
Was ist das langsame Goblinreittier(60%) und was das Schnelle(100%) zu dem meine Skelettpferde...
[C++]Funktion einer Klasse in einer anderen Funktion der Klasse verwenden, aber wie? 07/25/2010 - C/C++ - 3 Replies Mein Problem ist eigentlich recht simpel und die Lösung wahrscheinlich auch.
Da ich bisher fast 0 mit Klassen am Hut hatte, wollte ich mich doch mit dem Thema anfreunden und hatte gleich angefangen:
int test::Funktion2()
{
int temp;
cin>>temp;
return temp;
}
Welche Klasse ist die Beste Klasse 07/06/2010 - Metin2 - 6 Replies Hallo ich habe heute mal angefangen Metin 2 angefangen und wollte fragen welche klasse ist die beste meine Vorstellung Menge Deff
Wird Mich freuen auf Antwort