2016-06-09 3 views
-3
Public void method1() 
{ 
    string val="abc"; 
} 

Public void method2() 
{ 
    if(val=="abc") 
} 

Есть ли способ достичь этого? Я хочу получить значение «val» в методе2.Как передать значение от одного метода другому без использования возврата?

Edit-

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; 
    } 
} 

Это код, в котором я работаю.

Всякий раз, когда я вызываю метод SaveCredentials() из другого класса, string[] credentials = new string[7]; инициализируется каждый раз, перезаписывая ранее сохраненные значения.

+1

Сделать глобальную переменную, то есть поле/переменную класса. –

+1

Вы можете использовать приватную переменную для совместного использования состояния объекта между методами. – Adil

+0

Я сделал это .. позвольте мне изменить вопрос. –

ответ

1

Являются ли они в одном классе? Если да, то вы могли бы иметь переменный класс/свойство как это:

public string Val {get; private set;} 
public void method1() 
{ 
    Val ="abc"; 
} 

public void method2() 
{ 
    if(Val =="abc") { 
     //Do something here 
    } 
} 

Хотя будьте осторожны, вы должны сделать вал установлен, прежде чем начать использовать его.

EDIT

После прочтения вашего обновления, причина его сбрасывается в другом месте, потому что вы, скорее всего, создать новый экземпляр класса, хранящий переменные. Например, если это был Credentials класс, и вы называете это один раз с помощью этого:

Credentials c1 = new Credentials(); 
c.method1(); 

Но позже, у вас есть другой класс нужно получить к нему доступ, вы случайно называют:

Credentials c2 = new Credentials(); 
c.method2(); 

Это c2 теперь является новым экземпляром класса Credentials и никогда не будет иметь method1(). Вам нужно передать экземпляр c1 туда, где он вам нужен, и вы можете безопасно позвонить по телефону method2().

EDIT 2

Другим вариантом является использование одноплодной шаблон, если нужно только когда будет один экземпляр этого класса, и вы всегда хотите, чтобы получить доступ к нему, вы можете сделать следующее:

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"); 
     } 
    } 
} 

An example dotNetFiddle can be found here

+0

да. Я звоню из двух разных классов. Метод 1() формирует один и метод2() из другого. –

+0

Методы в одном классе? Если настройки должны быть одинаковыми, вам не следует создавать новый экземпляр класса, вместо этого передать начальный объект, созданный там, где он должен использоваться. Другой выбор - использовать метод singleton. Будет ли когда-либо существовать один объект этого класса для каждой среды выполнения приложения? – Draken

+0

Взгляните на проект https: // github.com/devdrone/NAVWSUi –