object就像一个箱子一样,把你要传的东西装进去。比如:
public object getInfo(string code) 
这个方法要获得wellInfo类型的return值,但是只返回一个object类型的值,就相当于把返回值装到一个箱子里,你用的时候要拆箱wellInfo objwellInfo=(wellInfo)getInfo(code)

解决方案 »

  1.   

    object是c#中所有类的父类,就是说所有的类都可以强制转换成object,如果是已object为参数或返回值的方法,则任何类型都可以传给它或者它可以返回任何类型。你这里没有一个暴露strWellCd的方法,在外处无法与它比较,就没办法获得啊。除非是这些信息都保存在数据库或其他什么地方,然后由getInfo生成一个wellInfo对象,然后把它返回出去(因为返回值是object,所以任意类型都可以返回),然后在要用的地方把object类型强制转换回wellInfo型。
      

  2.   

    强制转换 return (wellInfo)getInfo(code)
      

  3.   

    我是这样写的
    public object getInfo(string code) 
    {
     (code)
    return (wellInfo)getInfo(code)
    }
    我不知道该怎么用呀!请大家指点指点
      

  4.   

    你那样写没意义,返值还是会自动装箱的,系统会自动把return (wellInfo)getInfo(code)的值再变成
    object类型。
    应该:
    public wellInfo getInfo(string code) 
    {
        return (wellInfo)getInfo(code);
    }
      

  5.   

    如果上面的那个是重载方法,就不对了,应该把名字换掉:
    public wellInfo getwellInfo(string code) 
    {
        return (wellInfo)getInfo(code);
    }
      

  6.   

    public class wellInfo
    {
    ///////////////////////////////////////////////////////////////////////
    ///该类的字段
    ///////////////////////////////////////////////////////////////////////
    private string strWellCd;//机井编号
    private string strWellCd1;//机井校验编号
    ..
    private SqlConnection m_Conn= new SqlConnection(ConfigurationSettings.AppSettings["数据库路径"]); ///////////////////////////////////////////////////////////////////////
    ///该类的属性
    ///////////////////////////////////////////////////////////////////////
    public string WellCd
    {
    get
    {
    return strWellCd;
    }
    set
    {
    strWellCd=value;
    }
    } public string WellCd1
    {
    get
    {
    return strWellCd1;
    }
    set
    {
    strWellCd1=value;
    }
    }
    protected wellInfo Wellinfo; public wellInfo  getInfo(string  code)
    {
    // 
    // TODO: 在此处添加构造函数逻辑
    //
    // this.strWellCd=code;
    m_Conn.Open();;
    SqlCommand cmdMsg = new SqlCommand("select wellcd,wellcd1 from wellinfo where wellcd='110105006'",m_Conn);
    SqlDataReader drMsg = cmdMsg.ExecuteReader();
    if(drMsg.Read())
    {
    strWellCd = drMsg.GetString(0);
    strWellCd1 = drMsg.GetString(1); }
    drMsg.Close();
    m_Conn.Close();
               return (wellInfo)getInfo(code); }
      

  7.   

    不好意思,贴错了,是这样写的
    public class wellInfo
    {
    /////////////////////////////////////////////////////
    ///该类的字段
    //////////////////////////////////////////////////////
                      private string strWellCd;//机井编号
    private string strWellCd1;//机井校验编号
    ..
    private SqlConnection m_Conn= new SqlConnection(ConfigurationSettings.AppSettings["数据库路径"]); ////////////////////////////////////////////////////
    ///该类的属性
    ////////////////////////////////////////////////////
    public string WellCd
    {
    get
    {
    return strWellCd;
    }
    set
    {
    strWellCd=value;
    }
    } public string WellCd1
    {
    get
    {
    return strWellCd1;
    }
    set
    {
    strWellCd1=value;
    }
    }
    protected wellInfo Wellinfo; public wellInfo  getInfo(string  code)
    {

    m_Conn.Open();;
    SqlCommand cmdMsg = new SqlCommand("select wellcd,wellcd1 from wellinfo where wellcd='110105006'",m_Conn);
    SqlDataReader drMsg = cmdMsg.ExecuteReader();
    if(drMsg.Read())
    {
    strWellCd = drMsg.GetString(0);
    strWellCd1 = drMsg.GetString(1); }
    drMsg.Close();
    m_Conn.Close();
               return (wellInfo)getInfo(code); }
      

  8.   

    最后一句return (wellInfo)getInfo(code);里的getInfo(code)方法也是这个wellInfo类里面的吗?
    那你编译能通过吗?如果下面2个方法在同一个类里,能编译通过吗?
    public wellInfo  getInfo(string  code)
    public object getInfo(string  code)
      

  9.   

    两个同名的不能,我开始是想在domain里定义一个public object getInfo(string  code)的接口,然后在类well:domain
    我想在well类中实现public object getInfo(string  code)
    它返回的是一个wellInfo的对象
    我不知道说明白没有,我都已经晕了
      

  10.   

    return (wellInfo)base.getInfo(code);
      

  11.   

    请教:是这样吗?
    public object getInfo(string  code)
    {
    (code)
     return (wellInfo)base.getInfo(code);
    }
    怎么不对呢?麻烦大侠说清楚点我的问题所在,小弟实在有些笨了
      

  12.   

    你要
    public override object getInfo(string  code)
    { return (wellInfo)base.getInfo(code);
    }
      

  13.   

    public override wellInfo getInfo(string  code)
    { return (wellInfo)base.getInfo(code);
    }
      

  14.   

    又不对了,没有找到适合的方法来重写getInfo(string)
      

  15.   

    没有找到适合的方法来重写getInfo(string)
      

  16.   

    看看MSDN上override的例子:Example
    In this example, there is a base class, Square, and a derived class, Cube. Because the area of a cube is the sum of the areas of six squares, it is possible to calculate it by calling the Area() method on the base class.// cs_override_keyword.cs
    // Calling overriden methods from the base class
    using System;
    class TestClass 
    {
       public class Square 
       {
          public double x;      // Constructor:
          public Square(double x) 
          {
             this.x = x;
          }      public virtual double Area() 
          {
             return x*x; 
          }
       }   class Cube: Square 
       {
          // Constructor:
          public Cube(double x): base(x) 
          {
          }      // Calling the Area base method:
          public override double Area() 
          {
             return (6*(base.Area())); 
          }
       }   public static void Main()
       {
          double x = 5.2;
          Square s = new Square(x);
          Square c = new Cube(x);
          Console.WriteLine("Area of Square = {0:F2}", s.Area());
          Console.WriteLine("Area of Cube = {0:F2}", c.Area());
       }
    }
      

  17.   

    You cannot override a non-virtual or static method. The overridden base method must be virtual, abstract, or override.
      

  18.   

    非常感谢你yellowhwb(KaDoO),^_^,我的问题解决了,