Return 调用方法的结果

Return Results To Calling Method

将参数传递给方法对我来说不成问题,但是 return将参数传递给调用方方法,我从来没有这样做过,也不知道该怎么做。例如,我想从我的 GetStartOfQuery 方法 return soq。我如何才能将该数据返回到我的 BuildAQuery 方法中?

public static string soq = string.Empty;

public static void BuildAQuery(string databaseName)
{
  dao.Database dd;
  dao.DBEngine db = new dao.DBEngine();
  var qd1 = new dao.QueryDef(); 
  GetStartOfQuery(databaseName);
  dd = db.OpenDatabase(SetPath(databaseName));
  qd1.Name = String.Format("qry_PersonalInformation");
  qd1.SQL = String.Format(startOfQuery + "location", "empID");
  dd.QueryDefs.Append(qd1);
}

public static void GetStartOfQuery(string databaseName)
{
  if (VBS.Left(databaseName, 2) == "AC")
  {
    soq = "Select hiredate, terminationdate, employeename, ";
  }
  else 
  {
    soq = "Select hiredate, employeename, timeoffaccrued, timeoffused, ";
  }
}   

假设您只需要一个字符串:

public static string GetStartOfQuery(string databaseName)
{
  if (VBS.Left(databaseName, 2) == "AC")
  {
    return "Select hiredate, terminationdate, employeename, ";
  }
  else 
  {
    return "Select hiredate, employeename, timeoffaccrued, timeoffused, ";
  }
} 

public static void BuildAQuery(string databaseName)
{
    dao.Database dd;
    dao.DBEngine db = new dao.DBEngine();
    var qd1 = new dao.QueryDef(); 
    soq = GetStartOfQuery(databaseName);
    dd = db.OpenDatabase(SetPath(databaseName));
    qd1.Name = String.Format("qry_PersonalInformation");
    qd1.SQL = String.Format(startOfQuery + "location", "empID");
    dd.QueryDefs.Append(qd1);
}

会成功的

你最好使用这样的函数:

public static void BuildAQuery(string databaseName)
{
    dao.Database dd;
    dao.DBEngine db = new dao.DBEngine();
    var qd1 = new dao.QueryDef(); 
    soq = GetStartOfQuery(databaseName);
    dd = db.OpenDatabase(SetPath(databaseName));
    qd1.Name = String.Format("qry_PersonalInformation");
    qd1.SQL = String.Format(startOfQuery + "location", "empID");
    dd.QueryDefs.Append(qd1);
}


public static string GetStartOfQuery(string databaseName)
{
  if (VBS.Left(databaseName, 2) == "AC")
  {
    soq = "Select hiredate, terminationdate, employeename, ";
  }
  else 
  {
    soq = "Select hiredate, employeename, timeoffaccrued, timeoffused, ";
  }
  return soq;   
}  

因为 void 不 return 任何东西,而你想要一个值被 returned。如果您不想在 string 函数中 return 它,您可以根据需要将 var 作为 outref 传递。喜欢:

public static void BuildAQuery(string databaseName)
{
    dao.Database dd;
    dao.DBEngine db = new dao.DBEngine();
    var qd1 = new dao.QueryDef(); 
    string soq = string.Empty.
    GetStartOfQuery(databaseName, soq);
    dd = db.OpenDatabase(SetPath(databaseName));
    qd1.Name = String.Format("qry_PersonalInformation");
    qd1.SQL = String.Format(startOfQuery + "location", "empID");
    dd.QueryDefs.Append(qd1);
}


public static void GetStartOfQuery(string databaseName, out string soq)
{
  if (VBS.Left(databaseName, 2) == "AC")
  {
    soq = "Select hiredate, terminationdate, employeename, ";
  }
  else 
  {
    soq = "Select hiredate, employeename, timeoffaccrued, timeoffused, ";
  }  
}