Bạn phải sử dụng trường và thuộc tính "bình thường" một cách rõ ràng thay vì thuộc tính được triển khai tự động:
public class Bob
{
private int value;
public int Value
{
get { return value; }
set { this.value = value; }
}
}
Sau đó, bạn có thể chuyển trường dưới dạng tham số out:
Int32.TryParse("123", out bob.value);
Nhưng tất nhiên, điều đó sẽ chỉ hoạt động trong cùng một lớp, vì trường là riêng tư (và nên như vậy!).
Thuộc tính không cho phép bạn làm điều này. Ngay cả trong VB nơi bạn có thể chuyển một thuộc tính bằng cách tham chiếu hoặc sử dụng nó như một tham số out, về cơ bản vẫn có một biến tạm thời bổ sung.
Nếu bạn không quan tâm đến giá trị trả về của TryParse
, bạn luôn có thể viết phương thức trợ giúp của riêng mình:
static int ParseOrDefault(string text)
{
int tmp;
int.TryParse(text, out tmp);
return tmp;
}
Sau đó sử dụng:
bob.Value = Int32Helper.ParseOrDefault("123");
Bằng cách đó, bạn có thể sử dụng một biến tạm thời duy nhất ngay cả khi bạn cần thực hiện việc này ở nhiều nơi.