【问题标题】:How to call function depending on the datatype of the variable the result is assigned to [duplicate]如何根据分配给结果的变量的数据类型调用函数[重复]
【发布时间】:2016-08-01 16:46:07
【问题描述】:

我是 C# 的新手,想知道是否可以根据分配给它的变量调用函数?我知道我可以重载函数并将变量作为参数传递,但我只是想知道这是否可能。

例如,将数据行中的值转换为分配给它的数据类型。

private int myint;
private string mystr;
private DateTime mydate;

myint = assign(datarow, "number");

// calls this
private int assign (DataRow r, string columnname)
{
    return Convert.ToInt32(r[columnname]);
}

mystring = assign(datarow, "name");

// calls this
private string assign (DataRow r, string columnname)
{
     return Convert.ToString(r[columnname]);
}

【问题讨论】:

  • 该代码无效,当函数返回类型为void时,您无法返回值。
  • 如果您使用out 参数而不是返回类型,这是可能的。
  • 除了@rene 的回答,你会发现最接近你正在寻找的是泛型:msdn.microsoft.com/en-us/library/512aeb7t.aspx 虽然正如 rene 指出的那样)是不可能的。
  • 抱歉,已更正代码。可能是重复的,谢谢。但是,作为新手,我发现它们有点难以理解。但我会进一步查看发布的链接。
  • 您可以创建通用函数并处理这种情况。示例链接:msdn.microsoft.com/en-us/library/ms379564(v=vs.80).aspx

标签: c#


【解决方案1】:

除了返回类型问题。您不能这样做,因为函数声明会发生冲突。编译器需要对其编译的每个方法都有一个唯一的签名。它使用函数名称和参数生成这些签名。它不关心返回类型。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-06-27
    • 1970-01-01
    • 2013-01-03
    • 2019-01-07
    • 1970-01-01
    • 2010-10-02
    • 2021-12-16
    • 2019-07-21
    相关资源
    最近更新 更多