Chcę mieć ogólną funkcję drukowania ... PrintGeneric (T) ... w następującym przypadku, czego mi brakuje?C#: Przekazywanie ogólnego obiektu
Jak zawsze swoją pomoc/wgląd jest doceniana ...
public interface ITest
{}
public class MyClass1 : ITest
{
public string myvar = "hello 1";
}
public class MyClass2 : ITest
{
public string myvar = "hello 2";
}
class DoSomethingClass
{
static void Main()
{
MyClass1 test1 = new MyClass1();
MyClass2 test2 = new MyClass2();
Console.WriteLine(test1.myvar);
Console.WriteLine(test2.myvar);
Console.WriteLine(test1.GetType());
PrintGeneric(test1);
PrintGeneric<test2.GetType()>(test2);
}
// following doesn't compile
public void PrintGeneric<T>(T test)
{
Console.WriteLine("Generic : " + test.myvar);
}
}
'var' nie może być nazwą zmiennej, ponieważ jest to kluczowe. Czy możesz pokazać swój faktyczny kod? –
@AshBurlaczenko Nie zgadza się. 'var' to kontekstowe słowo kluczowe dodane w C# 3.0. Możesz użyć go jako nazwy identyfikatora. Podobnie możesz użyć 'yield',' select', 'z', itp. Jako nazw identyfikatorów w większości kontekstów. –
faktycznie "var" działał bez używania tylko Console.WriteLine ... ale to było złe, gdy użyłem słowa kluczowego jako nazwy identyfikatora ... – user1229895