2016-06-27 20 views
5

Vì vậy, tôi đang cố chuyển một chuỗi cục bộ sang một biểu mẫu khác trong dự án C#. Đây là mã của tôi:Không thể chỉ định thuộc tính hoặc bộ chỉ mục cho "-" chỉ được đọc

Mẫu 1:

... 
Main frm = new Main(); 
frm.Passvalue = usrTxt.Text; 
frm.ShowDialog(); 

Mẫu 2

... 
public string Username; 
public string Passvalue 
{ 
    get { return Username; } 
} 

Tôi nhận được lỗi:

Property or indexer "Main.Passvalue" cannot be assigned to "--" it is read only

Tôi chưa bao giờ tuyên bố bất cứ điều gì như ReadOnly, không có ai biết vấn đề ở đây là gì không?

+2

tôi đó là bởi vì bạn đã không được chỉ rõ 'sở hữu set' cho 'Passvalue' –

Trả lời

2

Nếu bạn muốn để có thể thiết tài sản của bạn, bạn cần phải thêm một thiết handler:

public string Passvalue 
{ 
    get { return Username; } 
    set { Username = value; } 
} 

Nó sẽ được dễ dàng hơn mặc dù sử dụng tính năng tự động thực hiện ngay lập tức:

public string Username 
{ 
    get; 
    set; 
} 
2

Tài sản của bạn bỏ setter. Thay đổi nó thành:

public string Passvalue 
{ 
    get { return Username; } 
    set { Username = value; } 
} 
+0

Nó hoạt động bây giờ, cảm ơn bạn! –

2

Vấn đề là bạn chỉ có một getter cho Form2.Passvalue, nhưng không có setter. Thêm này trong Form2:

public string Passvalue 
{ 
    get { return Username; } 
    set { Username = value; } // add this setter 
} 
7

Nó đã không setter, mà làm cho nó một tài sản chỉ đọc, thay đổi nó để:

public string Passvalue 
{ 
    get { return Username; } 
    set { Username = value; } 
} 

Ngẫu nhiên, điều này có vẻ không cần thiết chút, như bạn đang công khai phơi bày Username dù sao. Nó thường được coi là thực hành tốt để làm cho các lĩnh vực lớp học tư nhân.

1

Thuộc tính không có setter.

Đây là mã mà bạn có thể sử dụng cho các công cụ định vị và cài đặt tự động triển khai.

public string Username { get; set; } 
public string Passvalue { get; set; } 

Hoặc nếu bạn muốn nhận và thiết lập giá trị của UserName từ Passvalue, bạn có thể sử dụng

public string Username { get; set; } 
public string Passvalue 
{ 
    get { return Username; } 
    set { Username = value; } 
} 
Các vấn đề liên quan