关于object数据类型的问题,在线等

wxy923 2004-11-21 10:55:33
我以前从来没使过object数据类型,现在要求用这个数据类型,我不知道该怎么用,希望大家指点指点。谢谢了,说明如下:
接口名称:domain
//根据编号获得相应信息对象
public object getInfo(string code)
类名:wellInfo
成员变量:
private string strWellCd;
private string strWellAddr;
...
类名:well:domain
成员变量:protected wellInfo wellinfo
方法:
//根据水源井编号获得相应水源井基本信息对象(wellInfo)
public object getInfo(string code)
...全文
358 27 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
27 条回复
切换为时间正序
请发表友善的回复…
发表回复
yellowhwb 2004-11-21
  • 打赏
  • 举报
回复
return (wellInfo)base.getInfo(code);
wxy923 2004-11-21
  • 打赏
  • 举报
回复
两个同名的不能,我开始是想在domain里定义一个public object getInfo(string code)的接口,然后在类well:domain
我想在well类中实现public object getInfo(string code)
它返回的是一个wellInfo的对象
我不知道说明白没有,我都已经晕了
yellowhwb 2004-11-21
  • 打赏
  • 举报
回复
最后一句return (wellInfo)getInfo(code);里的getInfo(code)方法也是这个wellInfo类里面的吗?
那你编译能通过吗?

如果下面2个方法在同一个类里,能编译通过吗?
public wellInfo getInfo(string code)
public object getInfo(string code)
wxy923 2004-11-21
  • 打赏
  • 举报
回复
不好意思,贴错了,是这样写的
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);

}
wxy923 2004-11-21
  • 打赏
  • 举报
回复
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);

}
wxy923 2004-11-21
  • 打赏
  • 举报
回复
我现在都弄乱了,不知该如何下手了!我把代码贴出来,大家不要见笑呀,我真晕了!
yellowhwb 2004-11-21
  • 打赏
  • 举报
回复
如果上面的那个是重载方法,就不对了,应该把名字换掉:
public wellInfo getwellInfo(string code)
{
return (wellInfo)getInfo(code);
}
哈哈007哈 2004-11-21
  • 打赏
  • 举报
回复
up
yellowhwb 2004-11-21
  • 打赏
  • 举报
回复
你那样写没意义,返值还是会自动装箱的,系统会自动把return (wellInfo)getInfo(code)的值再变成
object类型。
应该:
public wellInfo getInfo(string code)
{
return (wellInfo)getInfo(code);
}
wxy923 2004-11-21
  • 打赏
  • 举报
回复
我是这样写的
public object getInfo(string code)
{
(code)
return (wellInfo)getInfo(code)
}
我不知道该怎么用呀!请大家指点指点
wxy923 2004-11-21
  • 打赏
  • 举报
回复
我有点明白了,我先试试看呀!
river723 2004-11-21
  • 打赏
  • 举报
回复
强制转换 return (wellInfo)getInfo(code)
leonlux 2004-11-21
  • 打赏
  • 举报
回复
object是c#中所有类的父类,就是说所有的类都可以强制转换成object,如果是已object为参数或返回值的方法,则任何类型都可以传给它或者它可以返回任何类型。你这里没有一个暴露strWellCd的方法,在外处无法与它比较,就没办法获得啊。除非是这些信息都保存在数据库或其他什么地方,然后由getInfo生成一个wellInfo对象,然后把它返回出去(因为返回值是object,所以任意类型都可以返回),然后在要用的地方把object类型强制转换回wellInfo型。
yellowhwb 2004-11-21
  • 打赏
  • 举报
回复
object就像一个箱子一样,把你要传的东西装进去。比如:
public object getInfo(string code)
这个方法要获得wellInfo类型的return值,但是只返回一个object类型的值,就相当于把返回值装到一个箱子里,你用的时候要拆箱wellInfo objwellInfo=(wellInfo)getInfo(code)
wxy923 2004-11-21
  • 打赏
  • 举报
回复
up
wxy923 2004-11-21
  • 打赏
  • 举报
回复
非常感谢你yellowhwb(KaDoO),^_^,我的问题解决了,
yellowhwb 2004-11-21
  • 打赏
  • 举报
回复
You cannot override a non-virtual or static method. The overridden base method must be virtual, abstract, or override.
xingyu923 2004-11-21
  • 打赏
  • 举报
回复
好的,我先学习学习,谢谢大侠这么热心!
yellowhwb 2004-11-21
  • 打赏
  • 举报
回复
看看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());
}
}
xingyu923 2004-11-21
  • 打赏
  • 举报
回复
没有找到适合的方法来重写getInfo(string)
加载更多回复(7)

111,097

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧