【发布时间】:2012-03-12 09:56:26
【问题描述】:
我想要一个通用的打印函数...PrintGeneric(T)...在以下情况下,我缺少什么?
一如既往地感谢您的帮助/见解...
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不能是变量名,因为它是关键字。你能显示你的实际代码吗? -
@AshBurlaczenko 不正确。
var是 C# 3.0 中添加的上下文关键字。您可以将其用作标识符名称。同样,您可以在大多数情况下使用yield、select、from等作为标识符名称。 -
实际上“var”在不使用 Console.WriteLine 的情况下确实可以工作......但是使用关键字作为标识符名称是我的错误......
-
在这种情况下,我们成功地猜出了您的问题所在以及错误所在。但是,您不应该过分依赖我们的精神力量 ;-) 一般来说,如果您准确地指出错误发生的代码行,并发布确切的错误消息,那么每个人的生活都会变得更轻松。
-
哈哈抱歉,我以后会尝试这样做。谢谢!