如果在团队开发中,A组员 编写了 A.cs文件,由于范型方法会自动识别, 运行结果是
“This is Generic Method”//A.cs文件
namespace TestGeneric
{
    partial class Program
    {
        static void Main(string[] args)
        {
            ShowDifference(1);
            Console.ReadLine();
            
        }        static void ShowDifference<T>(T t)
        {
            Console.WriteLine("This is Generic Method");
        }    }
}如果另外一个组员 B 写了B.cs代码 ,就会改变A.cs的运行结果
//B.cs
namespace TestGeneric
{
    partial class Program
    {
        static void ShowDifference(int Num)
        {
            Console.WriteLine("This is NON-Generic Method");
 
        }
 
    }
}这样的话 A.cs 的运行结果就是 “This is NON-Generic Method”;个人觉得范型方法重载微软设计的不周全,在这个地方 编译器至少 应该发出一个warning .

解决方案 »

  1.   

    2.0 还没用过,
    不过这不应该算是错误,这是函数重载,main里执行的那个函数,你传入一个int,肯定优先掉用b.cs 的方法
      

  2.   

    编译器不用报 Error ,至少报个warning吧
      

  3.   

    这就是不用接口的坏处,A、B都在猜想着写一个方法
    如果使用接口
    public interface IMethod
    {
        void Method1<T>(T t);
    }
    所有的类都派生自这个接口,那么,如果不实现这个泛型的方法肯定会报错。
      

  4.   

    我觉得这个跟范型也木有关系,但是warning我觉得是应该的。应该是partial类设计的不严密。。
      

  5.   

    看清楚了,是有区别的
     static   void   Main(string[]   args) 
            { 
                 ShowDifference(1); //非范型函数也就是B.cs里的
                   ShowDifference<int>(1);范型函数也就是A.cs里的             Console.ReadLine(); 
                            
             }