在两个方法之间传递参数c#

时间:2018-05-16 08:21:39

标签: c# uwp parameter-passing

我有两种方法。 首先,我在调用第二个方法时从第一个方法传递一个字符串。 在第二种方法中,我进行了计算。

现在我想将结果传回第一个方法。

我如何实现这一目标?

我的代码是这样的:

    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?

2 个答案:

答案 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");
相关问题