C#获取类型对象的计数值

时间:2018-05-07 07:17:08

标签: c#

我正在尝试获取我的列表中的计数值女巫是在类型对象中。 这是用于演示我正在使用的内容的虚拟代码

object test = new List<string>() { "test1", "test2" };

这就是我想要实现的目标

test.count

6 个答案:

答案 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);

注意:

Reflectionmetaprogramming提供了便利。在 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