我有两种方法。 首先,我在调用第二个方法时从第一个方法传递一个字符串。 在第二种方法中,我进行了计算。
现在我想将结果传回第一个方法。
我如何实现这一目标?
我的代码是这样的:
private void RegisterButton_Click(object sender, RoutedEventArgs e)
{
string databaseName = "databaseName";
CheckDatabase(databaseName);
bool test = bRet;
}
private bool CheckDatabase(string databaseName)
{
string connString = "Server=localhost\\SQLEXPRESS;Integrated Security=SSPI;database=master";
string cmdText = "select * from master.dbo.sysdatabases where name=\'" + databaseName + "\'";
bool bRet = false;
using (SqlConnection sqlConnection = new SqlConnection(connString))
{
sqlConnection.Open();
using (SqlCommand sqlCmd = new SqlCommand(cmdText, sqlConnection))
{
int nRet = sqlCmd.ExecuteNonQuery();
if (nRet <= 0)
{
bRet = false;
}
else
{
bRet = true;
}
}
}
return bRet;
}
如何传回bRet?
答案 0 :(得分:5)
根据你的其余代码,也许我误解了这个问题,但这应该有效:
bool test = CheckDatabase(databaseName);
答案 1 :(得分:1)
你必须bool test = CheckDatabase(databaseName);
之所以如此,是因为bRet
在CheckDatabase之外不存在,即使它具有相同的名称。
此外,如果您还计划返回nRet
,那么您需要使用System.ValueTuples
并执行以下操作:
private (bool bRet, int nRet) CheckDatabase(string databaseName)
{
string connString = "Server=localhost\\SQLEXPRESS;Integrated
Security=SSPI;database=master";
string cmdText = "select * from master.dbo.sysdatabases where name=\'" + databaseName + "\'";
bool bRet;
int nRet;
using (SqlConnection sqlConnection = new SqlConnection(connString))
{
sqlConnection.Open();
using (SqlCommand sqlCmd = new SqlCommand(cmdText, sqlConnection))
{
nRet = sqlCmd.ExecuteNonQuery();
bRet = !(nRet <= 0)
}
}
return (bRet, nRet);
}
你可以通过以下任何一种方式获得多种回报(根据我的个人喜好排序,基于什么更干净,更好的表现,1。是我最不喜欢的,4。轻松我最喜欢的)
// 1. Declare and assign variables individually (calls function needlessly twice)
bool bTest = CheckDatabase("databaseName").bRet;
int nTest = CheckDatabase("databaseName").nRet;
// 2. Declare variables first, then assign them at the same time (calls function only once)
bool bTest;
int nTest;
(bTest, nTest) = CheckDatabase("databaseName");
// 3. Declare and assign at the same time and use only one line
(bool bTest, int nTest) = CheckDatabase("databaseName");
// 4. Use the var keyword to infer the types of the tuple.
// Useful for larger tuples.
var (bTest, nTest) = CheckDatabase("databaseName");