如何在另一种方法中使用存储为变量的用户输入

How to use user input stored as a variable in another method

我的工作有一个应用程序使用数据库 (mongodB) 来存储数据。我想在程序完成安装后更改该数据。但是用户在安装应用程序之前设置了它。

我有一个功能要求用户输入然后安装应用程序,另一个功能是在应用程序安装完成后更改 mongodB。

我的问题是我的 'change mongo' 函数说变量在当前上下文中不存在。

如何将 console.readline() 的结果存储在函数 A 内的变量中,并使用该变量在函数 B 内连接字符串?

public static void downloadAndInstall37CineAgent()
{
    Console.Write("Enter Path to Cert: ");
    string certPath = Console.ReadLine();
    Console.Write("Enter Password to Cert: ");
    string certPass = Console.ReadLine();

    Console.Write("Network Manager Host: ");
    var HostName = Console.ReadLine();

    Console.Write("Streaming Engine Host Name: ");
    var streamName = Console.ReadLine();
    changeMongo();
}

public static void changeMongo()
{
    var client = new MongoClient("mongodb://localhost:27017");
    IMongoDatabase db = client.GetDatabase("CineNetGlobalSettings");
    var collection = db.GetCollection<BsonDocument>("CineNetSettings");

    var filter = Builders<BsonDocument>.Filter.Eq("_id", "NetworkManagerHost");
    var update = Builders<BsonDocument>.Update.Set("Value", hostname);
    var filterUrl = Builders<BsonDocument>.Filter.Eq("_id", "NetworkManagerUrl");
    var updateUrl = Builders<BsonDocument>.Update.Set("Value", hostname);
    var filterStream = Builders<BsonDocument>.Filter.Eq("_id", "WowzaIpAddress");
    var updateStream = Builders<BsonDocument>.Update.Set("Value", streamName);
}

Variables are only accessible in the context they are defined in.

除非您将变量定义为全局变量,否则来自一个方法的这些变量不会传递给下一个方法或返回调用方法,除非您正确地传递或 return 这些变量。

对于您的项目,您需要更改方法以及调用方法,

public static void changeMongo(string hostname, string streamName)

并且您将更新您正在进行的调用以包含两个参数,

changeMongo(Hostname, streamName);

本质上,您是在调用 changeMongo 并传递将在该方法中使用的两个值。请注意,变量的名称绑定到函数中初始化的变量的名称。 changeMongo 函数具有 hostName 而不是 HostName(这是 downloadAndInstall37CineAgent 方法的一部分)。主机名被翻译成主机名,因为那是 changeMongo 方法的 "first" 参数。