Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在不使用return的情况下将值从一个方法传递到另一个方法?_C#_String - Fatal编程技术网

C# 如何在不使用return的情况下将值从一个方法传递到另一个方法?

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

有没有办法做到这一点? 我想得到method2中“val”的值

编辑-

这是我正在编写的代码


每当我从另一个类调用方法
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");
        }
    }
}