c# - 我已经为 funion 发送了 2 个通用参数,第一个是 char,第二个是 int 为什么第一个如果 cond 有效?
问题描述
我已经向 func 发送了两个通用 args 并简单地询问它们是否是 typeof int 并且我将其中一个作为 char 发送,第二个作为 int 但仍然是如果 cindison 是工作示例:结果是第一个如果 cond 是工作我真的不明白为什么,因为第一个 arg 是 char
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApp5
{
class Program
{
public static T Adds<T>(T number1 , T number2 )
{
if ((number1 is int) && (number2 is int))
{
Console.WriteLine("int test");
}
else if (number1 is double )
{
Console.WriteLine("double test");
}
return number1;
}
public static void Main(string[] args)
{
Console.WriteLine(Adds('c',2));
}
}
}
解决方案
这就是你想要做的:
class Program
{
public static T Adds<T>(object number1, object number2)
{
if ((number1 is int) && (number2 is int))
{
Console.WriteLine("int test");
}
else if (number1 is double)
{
Console.WriteLine("double test");
}
return (T)Convert.ChangeType(number1, typeof(T));
}
public static void Main(string[] args)
{
Console.WriteLine(Adds<int>('c', 2));
}
}
推荐阅读
- delphi - 一次比较多个值
- javascript - Vue.js:订阅和修改从父组件到子组件的所有事件
- windows - 无法激活 Windows 应用商店应用 - 应用未启动
- arrays - MongoDB:顶级数组条件
- azure - 如何在 Azure 中将 xml 数据转换为 csv/excel/table
- gitlab - 在 GitLab 中附加管道工件以发布
- html - 屏蔽返回数字的字段
- c# - 使用代码优先方法创建不是自动递增的主键
- mysql - Mysql select from mediumint(8) to unique Binary(2)
- c++ - 如何删除 std::function
在向量中?