【发布时间】:2015-04-12 14:35:31
【问题描述】:
我这里有一个静态函数,它决定传递参数的类型,如果它是泛型的,则在其上调用内置的ToString() 方法,或者调用预定义的自定义促进器以打印出它的全部内容(如果可以)不胜枚举。这是我目前所拥有的;
public static String ToStringDecider<T> (T value)
{
Type t = typeof(value);
if (t.IsSubclassOf (Array) || t.IsSubclassOf (IList))
return ToString_List (value);
else if (t.IsSubclassOf (IEnumerable))
return ToString_Enumerable (value);
else if (t.IsSubclassOf (IDictionary))
return ToString_Dictionary (value);
else
return value.ToString ();
}
但是,第 3 行对变量 value 的第一次引用出现了一个语法错误,指出 "The name 'value' does not exist in the current context." 任何人都可以解释为什么会这样吗?
【问题讨论】:
-
你试过
value.GetType()吗? -
为什么
typeof()不够用? -
不应该是 typeof(T) 吗?
-
用
Type t = T;替换该行似乎不会给出任何语法错误。它会完成同样的事情吗? -
你好像受到
c语言的影响;)