【问题标题】:How to test if an object is a string? [duplicate]如何测试对象是否为字符串? [复制]
【发布时间】:2020-08-31 01:56:40
【问题描述】:

我有一个对象列表,我需要从中删除所有字符串,只剩下列表中的整数。

我遇到的问题是一些字符串只包含数字,例如“1”是一个字符串。如果我在 if 语句中使用 is if (listOfItems[i] is string) will not work on "1" 我也试过 GetType()typeof 如下所示,但我遇到了同样的问题。

如何测试对象是否为字符串,即使该字符串包含数字?

public static class Filter
    {
        public static IEnumerable<int> GetIntegersFromList(List<object> listOfItems)
        {
            for (int i = 0; i < listOfItems.Count; i++)
            {
                if (listOfItems[i].GetType() != typeof(int))
                    listOfItems.RemoveAt(i);
            }
            List<int> listOfInts = new List<int>();
            for (int i = 0; i < listOfItems.Count; i++)
            {
                listOfInts.Add((int)listOfItems[i]);
            }
            return listOfInts;
        }
    }

【问题讨论】:

    标签: c# list if-statement testing types


    【解决方案1】:

    忽略任何其他问题,您可以使用OfType 过滤所有实际上被装箱的对象int

    根据指定类型过滤 IEnumerable 的元素。

    var ints = listOfItems.OfType<int>().ToList();
    

    【讨论】:

    • 谢谢!这正是我想要做的,而且要简单得多。
    猜你喜欢
    • 1970-01-01
    • 2011-02-11
    • 2012-04-05
    • 2013-08-05
    • 1970-01-01
    • 1970-01-01
    • 2015-11-12
    • 2018-08-10
    • 2014-07-23
    相关资源
    最近更新 更多