日期:2014-05-18  浏览次数:20792 次

菜鸟提问,C#继承的问题。
我在程序中定义了几个实体类如下:

C# code
public class 车
{
    public string 轮子个数{get; set;}
}

public class 单车: 车
{
    public string 轮子个数{get; set;}
    public string 是否可以变速 {get; set;}
}

public class 汽车: 车
{
    public string 轮子个数{get; set;}
    public string 自动挡还是手动挡{get;set;}
}


我现在想写一个通用的方法来检测车轮的个数:
于是我定义了一个类:
C# code
public class 检测类
{
    public void 检测车辆轮子数(车 obj){
         Console.Write(obj.轮子个数);
    }
}


然后测试:
C# code
单车 bike = new 单车();
检测类.检测车辆轮子数(bike);


提示错误:
无效的参数。
请问为什么报错呢?既然单车是车的子类,为什么还是提示无效呢?

------解决方案--------------------
不建议使用中文的类和属性名,虽然C#支持。。

还有,检测类应该先实例化再调用方法吧,又不是静态类
------解决方案--------------------
我用英文写的代码测试没有提示错误
------解决方案--------------------
C# code

 public static object Convert(List<Models.CommonDataDetailModel> entities)
          {   return obj;   }

------解决方案--------------------
探讨

引用:

C# code

public static object Convert(List<Models.CommonDataDetailModel> entities)
{ return obj; }



参数不对的,list<T> 你传的对象...
public class HourData : CommonDa……

------解决方案--------------------
C# code
public class 检测类
        {
            public static void 检测车辆轮子数<T>(List<T> objs) where T : 车
            {
                foreach (车 obj in objs)
                {
                    Console.WriteLine(obj.轮子个数);
                }
            }

        }

检测类.检测车辆轮子数<单车>(new List<单车>());