GVKun编程网logo

检查对象是否是 Swift 中的给定类型(检测对象属性有哪些)

9

在这篇文章中,我们将带领您了解检查对象是否是Swift中的给定类型的全貌,包括检测对象属性有哪些的相关情况。同时,我们还将为您介绍有关.net–如何检查对象是否是某种类型、c–如何检查类型是否是给定类

在这篇文章中,我们将带领您了解检查对象是否是 Swift 中的给定类型的全貌,包括检测对象属性有哪些的相关情况。同时,我们还将为您介绍有关.net – 如何检查对象是否是某种类型、c – 如何检查类型是否是给定类模板的实例化?、C# – 遍历List中的给定类型元素、flex – 检查对象是否为空的知识,以帮助您更好地理解这个主题。

本文目录一览:

检查对象是否是 Swift 中的给定类型(检测对象属性有哪些)

检查对象是否是 Swift 中的给定类型(检测对象属性有哪些)

我有一个由AnyObject. 我想遍历它,并找到所有数组实例的元素。

如何在 Swift 中检查对象是否属于给定类型?

答案1

小编典典

如果要检查特定类型,可以执行以下操作:

if let stringArray = obj as? [String] {    // obj is a string array. Do something with stringArray}else {    // obj is not a string array}

您可以使用“作为!” obj如果不是类型,那将引发运行时错误[String]

let stringArray = obj as! [String]

您还可以一次检查一个元素:

let items : [Any] = ["Hello", "World"]for obj in items {   if let str = obj as? String {      // obj is a String. Do something with str   }   else {      // obj is not a String   }}

.net – 如何检查对象是否是某种类型

.net – 如何检查对象是否是某种类型

我将各种对象传递到子例程以运行相同的过程,但每次使用不同的对象。例如,在一种情况下,我使用ListView,在另一种情况下,我传递一个DropDownList。

我想检查被传递的对象是一个DropDownList然后执行一些代码,如果它是。我如何做到这一点?

我的代码到目前为止不工作:

Sub FillCategories(ByVal Obj As Object)
    Dim cmd As New sqlCommand("sp_Resources_Categories",Conn)
    cmd.CommandType = CommandType.StoredProcedure
    Obj.DataSource = cmd.ExecuteReader
    If Obj Is System.Web.UI.WebControls.DropDownList Then

    End If
    Obj.DataBind()
End Sub
在VB.NET中,您需要使用 GetType method来检索对象的实例的类型,并使用 GetType() operator来检索另一种已知类型的类型。

一旦你有两种类型,你可以简单地使用Is运算符进行比较。

所以你的代码应该实际写成这样:

Sub FillCategories(ByVal Obj As Object)
    Dim cmd As New sqlCommand("sp_Resources_Categories",Conn)
    cmd.CommandType = CommandType.StoredProcedure
    Obj.DataSource = cmd.ExecuteReader
    If Obj.GetType() Is GetType(System.Web.UI.WebControls.DropDownList) Then

    End If
    Obj.DataBind()
End Sub

您还可以使用TypeOf运算符而不是GetType方法。注意,这将测试你的对象是否与给定的类型兼容,而不是它是相同的类型。看起来像这样:

If TypeOf Obj Is System.Web.UI.WebControls.DropDownList Then

    End If

完全琐碎,不相关的昵称:传统上,当编写.NET代码(VB.NET或C#)时,参数的名称是camelCased(意味着它们总是以小写字母开头)。这使得他们很容易从类,类型,方法等一目了然。

c – 如何检查类型是否是给定类模板的实例化?

c – 如何检查类型是否是给定类模板的实例化?

这个问题在这里已经有一个答案:> Doing a static_assert that a template type is another template2
是否可以检查一个类型是特定模板的实例化?

我有一个类模板,其中一个模板参数必须是特定模板的实例化或其他类型.例如,考虑一个类型列表的简单定义:

struct null_type;template <typename Head,typename Tail>struct typelist{    // Tail must be a typelist or null_type    typedef Head head;    typedef Tail tail;};

现在,我想确保为Tail模板参数提供的类型始终是类型列表的实例化或null_type.我可以使用部分专业化定义模板,仅针对这些情况,如下所示:

template <typename Head,typename Tail>struct typelist; // default,not definedtemplate <typename Head,typename H,typename T>struct typelist< Head,typelist<H,T> > // Tail = typelist,ok{    typedef Head head;    typedef typelist<H,T> tail;};template <typename Head>struct typelist< Head,null_type > // Tail = null_type,ok{    typedef Head head;    typedef null_type tail;};

但是,我最终会重复代码,这是我想避免的.理想情况下,我需要一个特征来测试一个类型是否是模板的实例化,将其与enable_if或静态断言配合使用:

#include <boost/mpl/or.hpp>#include <type_traits>struct null_type;template <typename Head,typename Tail>struct typelist{    static_assert(        boost::mpl::or_<            is_instantiation_of< typelist,Tail >,std::is_same< Tail,null_type >        >::value,"Tail must be a typelist or null_type" );    typedef Head head;    typedef Tail tail;};

标准库或Boost中是否有这样的特质(is_instantiation_of)?是可以写一个吗?

解决方法

我想出了以下解决方案,使用C 11变体模板和简单的部分专业化:
#include <type_traits>template < template <typename...> class Template,typename T >struct is_instantiation_of : std::false_type {};template < template <typename...> class Template,typename... Args >struct is_instantiation_of< Template,Template<Args...> > : std::true_type {};

它可以通过使用预处理器为不同数量的模板参数生成版本而适用于C 03,但也可能有一种更简单的方法.

C# – 遍历List中的给定类型元素

C# – 遍历List中的给定类型元素

我有一个抽象类(Object2D)和几个继承Object2D的类(例如displayObject2D)

我使用List来存储对这些对象的所有引用.

我想遍历此List中的每个displayObject2D.

到目前为止,以下代码正在运行,但对C#开发不熟悉,我想知道是否有更好的做法:

List<Object2D> tmp = objects.FindAll( delegate( Object2D obj )
                                      { return obj is displayObject2D; } );
foreach( displayObject2D obj in tmp )
{
   ...
}

提前致谢!

解决方法

var objects2d = objects.OfType<displayObject2D>();

如果你想要一个IEnumerable

var listofObjects2d = objects2d.ToList();

如果你想要一个List

请注意,OfType将为您提供更具体的类型

IEnumerable<displayObject2D>

如果它不是您所期望的,请使用Cast扩展将其强制转换为可枚举的基类型.

var listofObjects2dFilteredByMoreSpecificType = 
 objects.OfType<displayObject2D>.Cast<Object2D>()
//.ToList() // until you really need an IList<T> better leave it just an enumerable
;

flex – 检查对象是否为空

flex – 检查对象是否为空

如果类型为object的传递参数为空,我想检查我的函数.有时它是空的但仍然不是null因此我不能依赖于null条件.是否有一些属性,如’长度’/’大小’的flex对象,我可以在这里使用.
请帮忙.
提前致谢.

解决方法

如果您的意思是对象没有属性:
var isEmpty:Boolean = true;
for (var n in obj) { isEmpty = false; break; }

关于检查对象是否是 Swift 中的给定类型检测对象属性有哪些的介绍已经告一段落,感谢您的耐心阅读,如果想了解更多关于.net – 如何检查对象是否是某种类型、c – 如何检查类型是否是给定类模板的实例化?、C# – 遍历List中的给定类型元素、flex – 检查对象是否为空的相关信息,请在本站寻找。

本文标签: