2013-04-05 52 views
-1

我有以下類:使用在C#類設置

public class Class1 
{ 
    private int pam1; 

    public Class1() 
    { 

    } 

    public void ChangePam1(int _NewValue) 
    { 
     UpdatePam1(_NewValue); 
     pam1 = _NewValue; 
    } 

    public int Pam1 
    { 
     set { this.pam1 = value; } 
     get { return this.pam1; } 
    } 
} 

目前,當我想改變的Pam1的價值,我執行以下操作:

int n = 500; 
Class1 c1 = new Class1(); 
c1.ChangePam1(n); 

我怎樣才能改變它使用Set

+0

你問的是如何設置一個屬性?''c1.Pam1 = 500' – Jodrell 2013-04-05 08:44:22

+0

不僅設置一個屬性,還做與變化相關的東西,在這種情況下,更新數據庫中的值。 – enb081 2013-04-05 08:51:12

回答

9

你可以做到這一點(它會調用set):

public class Class1 
{ 
    private int pam1; 

    public Class1(){} 

    private void ChancePam1(int newValue) 
    { 
     UpdatePam1(newValue); 
     pam1 = newValue; 
    } 

    public int Pam1 
    { 
     set { ChancePam1(value); } 
     get { return this.pam1; } 
    } 
} 

然後:

int n = 500; 
Class1 c1 = new Class1(); 
c1.Pam1 = n; 

也有看this

+0

這不會更新db中的值! – enb081 2013-04-05 08:38:59

+3

設置一個屬性應該通常不會有如此嚴重的副作用(更新數據庫)。如果你想要這種行爲,一種方法更合適(請參閱[在適當情況下使用屬性])(http://msdn.microsoft.com/en-us/library/ms182181.aspx)) – 2013-04-05 08:40:47

+0

@ enb081因爲此代碼不做相關的數據庫更新。 – 2013-04-05 08:40:53

6

只需設置您的c1對象的Pam1屬性。

c1.Pam1 = n; 

或者您可以使用;

public int Pam1 
{ 
    set { ChancePam1(value); } 
    get { return this.pam1; } 
} 
3

如果你想讓它做別的事情,在你的代碼

public int Pam1 
{ 
    set { 
     this.pam1 = value; 
     UpdatePam1(value); 
     } 
    get { return this.pam1; } 
} 

您可以在工作setter幾乎就像在一個正常的方法定義它。

如有疑問,請在主題上考慮MSDN

2

以下列方式改變你的類可能是一個好主意:

public class Class1 
{ 
    private int pam1; 

    public Class1() 
    { 

    } 

    public int Pam1 
    { 
     set { UpdatePam1(_NewValue);this.pam1 = value; } 
     get { return this.pam1; } 
    } 
} 

...和你的財產的工作:

int n = 500; 
Class1 c1 = new Class1(); 
c1.pam1=n; 
2

你只需要調用UpdatePam1(值)在您所設定的

public int Pam1 
{ 
    set { UpdatePam1(value); 
      pam1 = value; 
     } 
    get { return this.pam1; } 
} 

public int Pam1 
{ 
    set { ChangePam1(value); } 
    get { return this.pam1; } 
}