在 C# 中使用泛型类型作为参数

Gotti92

有没有一种方法可以告诉方法泛型具有哪种类型?我想要做的是告诉方法它只能是 A 或 B 类型的对象,但没有别的,所以我可以像这样工作

if (myObject.GetType() == typeof(myTypeA)){doAstuff();} if (myObjectGetType() == typeof(myTypeB)) {doBstuff();}

method<T>(T myObject){ T = myTypeA, T = myTypeB, T = nothing else}

谢谢你的帮助

Mong Zhu

您可以检查方法内部的类型,然后将其转换为适当的类型并执行适当的“东西”:

public void method<T>(T myObject)
{
    if (myObject is myTypeA)
    {
        myTypeA objA = myObject as myTypeA;
        objA.DoA_Stuff();
    }
    else if (myObject is myTypeB)
    {
        myTypeB objB = myObject as myTypeB;
        objB.DoB_Stuff();
    }
    else
    {
        return ;
    }
}

但这将是对泛型的浪费。如果他们共享一些方法,你也可以创建一个基类,并让 typeA 和 typeB 继承它。然后您的方法可以将基类对象作为参数:

public void method(BaseClass myObject)

并且只有一个 if - case 和一个铸造。只有方法多于基类的那个。

编辑:

想象一下你会有这样一个结构:

public class BaseType
{
    public int SharedProp { get; set; } // shared property 

    public virtual int DoSharedStuff() // shared method
    {
        return SharedProp;
    }    
}

public class myTypeA : BaseType
{
    public int A_Prop { get; set; }

    // overwritten shared meth adjusted to the needs of type A
    public override int DoSharedStuff() 
    {
        return base.SharedProp + this.A_Prop;
    }
}

public class myTypeB : BaseType
{
    public int B_Prop { get; set; }

    // overwritten shared meth adjusted to the needs of type B
    public override int DoSharedStuff()
    {
        return base.SharedProp + this.B_Prop;
    }

    // individual method of Type B
    public int DoB_Stuff()
    {
        return this.B_Prop;
    }
}

然后你的方法将只采用基类的一个子类并根据需要执行:

public void method(BaseType myObject)
{
    // shared case: here type A will perform type A action 
    // and type B will perform type B action
    myObject.DoSharedStuff();

    // case B where you need really the extra stuff!
    if (myObject is myTypeB)
    {
        myTypeB objB = myObject as myTypeB;
        objB.DoB_Stuff();
    }
}

这种方法或现象称为多态性

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在 Swift 中使用 Objective-C 轻量级泛型类型为类型参数提供 AnyHashable

来自分类Dev

C#派生泛型类型参数

来自分类Dev

在C#中使用double类型作为参数

来自分类Dev

C#使用强制转换属性作为参数调用泛型方法

来自分类Dev

C#使用强制转换属性作为参数调用泛型方法

来自分类Dev

是否可以在C#doc注释中使用<&>作为泛型示例?

来自分类Dev

返回C#中作为集合的泛型类型

来自分类Dev

在C#中指定泛型类型参数时如何使用“ dynamic”?

来自分类Dev

如何在C#中使用派生类型重写泛型方法

来自分类Dev

在C#中使用as关键字与泛型类型冲突的编译时行为

来自分类Dev

.NET C#-如何在递归调用中使用变量泛型类型?

来自分类Dev

泛型类型参数C#-如何泛型类返回类型

来自分类Dev

C#泛型类作为参数,与泛型类的调用方法具有相同的T

来自分类Dev

C#泛型类作为参数,与泛型类的调用方法具有相同的T

来自分类Dev

C#5.0泛型:参数类型推断

来自分类Dev

C#/。Net泛型如何知道其参数类型?

来自分类Dev

没有重载或泛型的C#多种参数类型

来自分类Dev

C#中的递归泛型类型参数

来自分类Dev

c#获取泛型类中泛型类型参数的名称

来自分类Dev

Kotlin 中的 Java 泛型:在 Kotlin 中使用 Java 原始类型作为方法参数

来自分类Dev

使用接口作为通用类的类型参数,但在C#中使用“类”的限制

来自分类Dev

如何在C#中使用泛型将类型静态绑定在一起(如TypeToType <T>)?

来自分类Dev

当在c#8中使用子类约束时,如何指定泛型引用类型为可为空?

来自分类Dev

在C#中的基类中使用泛型:如何确保基类中的方法返回派生类的类型?

来自分类Dev

在C中使用函数作为参数

来自分类Dev

在C中使用函数作为参数

来自分类Dev

在C ++中使用struct数组作为参数

来自分类Dev

在 C++ 中使用逻辑作为参数

来自分类Dev

C中使用数组作为参数的函数

Related 相关文章

  1. 1

    在 Swift 中使用 Objective-C 轻量级泛型类型为类型参数提供 AnyHashable

  2. 2

    C#派生泛型类型参数

  3. 3

    在C#中使用double类型作为参数

  4. 4

    C#使用强制转换属性作为参数调用泛型方法

  5. 5

    C#使用强制转换属性作为参数调用泛型方法

  6. 6

    是否可以在C#doc注释中使用<&>作为泛型示例?

  7. 7

    返回C#中作为集合的泛型类型

  8. 8

    在C#中指定泛型类型参数时如何使用“ dynamic”?

  9. 9

    如何在C#中使用派生类型重写泛型方法

  10. 10

    在C#中使用as关键字与泛型类型冲突的编译时行为

  11. 11

    .NET C#-如何在递归调用中使用变量泛型类型?

  12. 12

    泛型类型参数C#-如何泛型类返回类型

  13. 13

    C#泛型类作为参数,与泛型类的调用方法具有相同的T

  14. 14

    C#泛型类作为参数,与泛型类的调用方法具有相同的T

  15. 15

    C#5.0泛型:参数类型推断

  16. 16

    C#/。Net泛型如何知道其参数类型?

  17. 17

    没有重载或泛型的C#多种参数类型

  18. 18

    C#中的递归泛型类型参数

  19. 19

    c#获取泛型类中泛型类型参数的名称

  20. 20

    Kotlin 中的 Java 泛型:在 Kotlin 中使用 Java 原始类型作为方法参数

  21. 21

    使用接口作为通用类的类型参数,但在C#中使用“类”的限制

  22. 22

    如何在C#中使用泛型将类型静态绑定在一起(如TypeToType <T>)?

  23. 23

    当在c#8中使用子类约束时,如何指定泛型引用类型为可为空?

  24. 24

    在C#中的基类中使用泛型:如何确保基类中的方法返回派生类的类型?

  25. 25

    在C中使用函数作为参数

  26. 26

    在C中使用函数作为参数

  27. 27

    在C ++中使用struct数组作为参数

  28. 28

    在 C++ 中使用逻辑作为参数

  29. 29

    C中使用数组作为参数的函数

热门标签

归档