我正在尝试获取我的列表中的计数值女巫是在类型对象中。 这是用于演示我正在使用的内容的虚拟代码
object test = new List<string>() { "test1", "test2" };
这就是我想要实现的目标
test.count
答案 0 :(得分:2)
您无法获取变量类型不知道的属性。您应该将其转换为正确的类型:
List<string> test = new List<string>() { "test1", "test2" };
int count = test.Count;
如果您愿意,可以使用var
,这将转换为与上述完全相同的内容:
var /*actually List<string>*/ test = new List<string>() { "test1", "test2" };
答案 1 :(得分:0)
除非你的测试必须是对象类型(我不明白为什么它需要在问题中)。
更改
object test = new List<string>() {"test1","test2"};
到
List<string> test = new List <string>() {"test1","test2"};
将允许您使用计数方法
答案 2 :(得分:0)
如果你知道你的列表是字符串类型,那么你应该使用字符串类型列表而不是对象。如下所示
List<string> lst = new List<string>() { "test1", "test2" };
if (lst.Count() > 0)
{
//Do some thing here
}
答案 3 :(得分:0)
您可以使用以下代码来获取对象的计数。您可以使用Reflection
实现此目的。
object test = new List<string>() { "test1", "test2" };
var property = typeof(ICollection).GetProperty("Count");
int count = (int)property.GetValue(test, null);
注意:强>
Reflection
为metaprogramming提供了便利。在 SPECIAL 案例中使用Reflection
的好处是,无论任何类型,都可让开发人员有权访问Assembly
Runtime
。我建议仅在特殊场景中使用Reflection。
正确的方法是将object
投射到
List<string> test = new List<string>() { "test1", "test2" };
int count = test.Count;
答案 4 :(得分:0)
使用时将对象强制转换为特定类型。
object test = new List<string>() { "test1", "test2" };
int count = ((List<string>) test).Count;
或的
您可以简单地使用var来初始化列表,以避免每次使用时进行转换。
var test = new List<string>() { "test1", "test2" };
int count = test.Count;
或的
您可以使用特定类型进行初始化。
List<string> test = new List<string>() { "test1", "test2" };
int count = test.Count;
答案 5 :(得分:-3)
当我从我的方法中取回它时,它将永远是类型对象。我找到了解决方案
List<string> tt = (List<string>)test;
myCountValue = tt.Count