【问题标题】:How to pass any type of value to function如何将任何类型的值传递给函数
【发布时间】:2019-08-22 13:48:17
【问题描述】:

所以本质上,我希望能够将多个参数传递给一个函数。其中一个是可选的,我也希望它采用任何类型的变量。

如何做到这一点,我这样的事情是否离谱:

public new object Session (String strSession, Type objValue = null)
{
    // Execute logic
}

或者

public new object Session <T> (String strSession, objValue<T> = null) 
{
    // Execute logic
}

不明白为什么这被否决了。我提供了清晰的代码 sn-ps 不是吗?

【问题讨论】:

  • objectdynamic - 不是 Type(如果你想要第一个表单)。

标签: c# asp.net-mvc model-view-controller types optional


【解决方案1】:

您可以使用 object,它是所有 .NET 类型的基本类型,也可以使用泛型方法。

public new object Session (String strSession, object objValue = null)
{
    // Execute logic
}

或者

public new object Session<T> (String strSession, T objValue = default) 
{
    // Execute logic
}

编辑:

由于T 可以是任何类型,包括值类型(不能是null),default 更适合泛型版本。

我强烈推荐通用版本,因为对于值类型,第一个版本实际上会强制进行装箱,这可能是性能问题。

阅读更多关于装箱和拆箱的信息here

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-12
    • 2016-02-28
    • 1970-01-01
    • 1970-01-01
    • 2017-07-19
    相关资源
    最近更新 更多