如何在方法内部声明方法

本文关键字:方法 内部 声明 | 更新日期: 2023-09-27 18:02:03

我有一个这样的类:

public Class Work
{
   public DataTable GetWork()
      {
         //return a datatable which contains information about working hourse
      }
}

我想在GetWork方法中声明另一个方法。

实际上我想创建一个类,在这个类中我可以这样调用:

DataTable myData=Work.GetWork.ToDays()//Returns work days
DataTable myOtherData=Work.GetWork.ToHour();//Returns work hours

我怎样才能达到上述状态?提前感谢,请原谅我的英语不好:(

如何在方法内部声明方法

您可以使用扩展方法来实现这一点。
例子:

public static class DataTableExtensionMethods
{
  public static int ToDays(this DataTable dt)
  {
    // fetch and return the days.
  }
}

现在你可以用:

var myDays = Work.GetWork().ToDays();

不能在另一个方法中定义一个方法。

你可以在类中创建一个属性,如下所示:

public class Work
{
    public static DataTable WorkProperty
    {
        get
        {
            //return a datatable which contains information about working hourse
        }
    }
}

现在,定义你的GetWorkInHoursGetWorkInDays方法,使它们接受一个DataTable作为参数,也返回一个DataTable,并在里面做你的事情。

现在,你可以写

DataTable myData=Work.WorkProperty.GetWorkInDays()//Returns work days
DataTable myOtherData=Work.WorkProperty.GetWorkInHours();//Returns work hours

创建一个自定义的DataTable类,在其中实现ToDaysToHour操作。

的例子:

 public class Work
 {
     public MyDataTable GetWork()
     {
          //return a datatable which contains information about working hourse
     } 
 }
 public class MyDataTable : DataTable
 {
      public int ToDays()
      {
          // todo: implement
      }
      public int ToHour()
      {
          // todo: implement
      }
 }

我喜欢这种扩展方法,因为您可以将逻辑放在逻辑所属的位置,并且无需添加using语句即可自动使用。

您必须创建另一个类

public class Work
{
    public DataTable GetWork()
    {
        DataTable result;
        //create result
        return result;
    }
}
public class DataTable 
{
    // properties
    // int or other type...
    public int ToDays()
    {
         // return a property
         return something;
    }
    // int or other type...
    public int ToHours()
    {
         // return a property
         return something;
    }
}

你可以调用你的结果:

var myData = Work.GetWork().ToDays()//Returns work days
var myOtherData  =Work.GetWork().ToHour();//Returns work hours

(确保GetWork()总是返回非null的东西)