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

参数传递
有两个结构体
public struct Height
{
  string str;
  int i;
  double d;
}

public struct Coordinate
{
  double dir;
  double dis;
}
有一个函数function,想给function传递这两个结构体,根据结构体的不同,做出相应的处理,可是我怎么知道传递的是哪一个结构体?


------解决方案--------------------
C# code


其实,你应该使用泛型


        private void function(object obj)
        {
            MessageBox.Show(obj.GetType().Name);
        }

        private void button2_Click(object sender, EventArgs e)
        {
            Height h = new Height();
            
            function(h);

            Coordinate c = new Coordinate();
            function(c);
        }

------解决方案--------------------
C# code
public void function(object obj) 
{
  if (obj is Height)
  {
    //
  }
  else if (obj is Coordinate)
  {
    //
  }
}

------解决方案--------------------
楼上的的,使用重载也可以的
private void function(Height x)
{
MessageBox.Show(x.GetType().Name);
}
private void function(Coordinate c)
{
MessageBox.Show(c.GetType().Name);
}

------解决方案--------------------
方法重载

void function(Heigth heigth){
//...
}
void function(Coordinate c){
//...
}
//
同意楼上
------解决方案--------------------
重载比较好. 
或者就判断类型. is或者typeof()==GetType()
------解决方案--------------------

重载简单易懂高效,建议用重载