C# 如何在不使用return的情况下将值从一个方法传递到另一个方法?
有没有办法做到这一点? 我想得到method2中“val”的值 编辑- 这是我正在编写的代码C# 如何在不使用return的情况下将值从一个方法传递到另一个方法?,c#,string,C#,String,有没有办法做到这一点? 我想得到method2中“val”的值 编辑- 这是我正在编写的代码 每当我从另一个类调用方法SaveCredentials()时,string[]credentials=newstring[7]时,都会覆盖先前存储的值。它们是否在同一个类中?如果是这样,您可以有一个类变量/属性,如下所示: string[] credentials = new string[7]; public void StoreCredentials(string server, string us
每当我从另一个类调用方法
SaveCredentials()
时,string[]credentials=newstring[7]每次初始化代码>时,都会覆盖先前存储的值。它们是否在同一个类中?如果是这样,您可以有一个类变量/属性,如下所示:
string[] credentials = new string[7];
public void StoreCredentials(string server, string user, string pass, string instanc, string port, string domain, string company)
{
if (!string.IsNullOrEmpty(server) && !string.IsNullOrEmpty(user) && !string.IsNullOrEmpty(instanc) && !string.IsNullOrEmpty(port)
&& !string.IsNullOrEmpty(pass) && !string.IsNullOrEmpty(domain) && !string.IsNullOrEmpty(company))
{
credentials[0] = server;
credentials[1] = user;
credentials[2] = pass;
credentials[3] = instanc;
credentials[4] = port;
credentials[5] = domain;
credentials[6] = company;
}
else
{
credentials = null;
}
}
public bool SaveCredentials()
{
if(credentials==null)
{
return true;
}
else
{
return false;
}
}
尽管要小心,但在开始使用val之前,需要先设置val
编辑
读取更新后,在别处重置它的原因是因为您很可能正在创建存储变量的类的新实例。例如,如果这是一个Credentials
类,您使用以下命令调用它一次:
public string Val {get; private set;}
public void method1()
{
Val ="abc";
}
public void method2()
{
if(Val =="abc") {
//Do something here
}
}
但是后来,您有一个不同的类需要访问它,您意外地调用:
Credentials c1 = new Credentials();
c.method1();
这个c2
现在是Credentials
类的一个新实例,不会运行method1()。您需要将c1
的实例传递到需要它的地方,然后可以安全地调用method2()
编辑2
另一种选择是使用singleton模式,如果该类只有一个实例,并且您始终希望访问它,则可以执行以下操作:
Credentials c2 = new Credentials();
c.method2();
使其成为全局变量,即类字段/变量。您可以使用私有变量在方法之间共享对象的状态。我做到了。。让我编辑这个问题。是的,这叫做实例变量或属性。重复的问题为我提供了返回值的解决方案。我不想用退货。是的。我是从两个不同的班级打来的。Method1()形式不同,method2()形式不同。但是这些方法在同一个类中吗?如果设置应相同,则不应创建类的新实例,而应将创建的初始对象传递到应使用它的位置。您的另一个选择是使用singleton方法。对于应用程序的每个运行时,这个类是否只存在一个对象?请看一看这个项目,恐怕不会,除非我得到报酬。我已经提供了很多关于你现在如何解决这个问题的信息。看看dotNetFiddle,它应该清楚地说明这些不同的方法是如何工作的
Credentials c2 = new Credentials();
c.method2();
public class Credentials {
private static Credentials instance;
private Credentials() {}
public static Credentials getInstance() {
if (instance == null)
instance = new Credentials();
return instance;
}
public string Val {get; private set;}
public void method1()
{
Val ="abc";
}
public void method2()
{
if(Val =="abc") {
Console.WriteLine(Val);
}
else {
Console.WriteLine("Val is not set");
}
}
}