首页 > 解决方案 > 我已经为 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));
        }
    }
}

标签: c#c#-4.0c#-3.0

解决方案


这就是你想要做的:

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));
    }
}

推荐阅读