Tôi vẫn còn nghi ngờ về object
. Nó là lớp cơ sở chính của bất cứ thứ gì, bất kỳ lớp nào. Nhưng nó là kiểu tham chiếu hay kiểu giá trị. Hoặc giống như những hành vi này? Tôi cần phải làm rõ điều này. Tôi gặp khó khăn khi hiểu điều đó.Đối tượng có phải là loại tham chiếu hoặc loại giá trị không?
object obj1 = "OldString";
object obj2 = obj1;
obj1 = "NewString";
MessageBox.Show(obj1 + " " + obj2);
//Output is "NewString OldString"
Trong trường hợp này, nó hoạt động như một loại giá trị. Nếu đối tượng là kiểu tham chiếu thì tại sao giá trị obj2 vẫn là "OldString"
class SampleClass
{
public string Text { get; set; }
}
SampleClass Sample1 = new SampleClass();
Sample1.Text="OldText";
object refer1 = Sample1;
object refer2 = refer1;
Sample1.Text = "NewText";
MessageBox.Show((refer1 as SampleClass).Text + (refer2 as SampleClass).Text);
//OutPut is "NewText NewText"
Trong trường hợp này nó hoạt động như kiểu tham chiếu
Chúng ta có thể suy luận rằng loại object
's là những gì bạn hộp bên trong nó. Nó có thể là cả kiểu tham chiếu và loại giá trị. Đó là về những gì bạn hộp bên trong. Tôi có đúng không?
sử dụng một chuỗi như một ví dụ là một ý tưởng siêu xấu. chuỗi là tham chiếu nhưng nó cũng không thay đổi. Khi bạn tạo một cái mới, đầu tiên nó sẽ xem qua chuỗi ký tự để xem chuỗi đã tồn tại chưa. chuỗi là một trường hợp siêu đặc biệt, không sử dụng nó để giải thích các khái niệm xung quanh tham chiếu và giá trị typs. – Markus
"Khi bạn tạo một cái mới, đầu tiên nó sẽ xem qua chuỗi ký tự để xem chuỗi đã tồn tại chưa." - đó ... không thực sự đúng. Nó sẽ kiểm tra trong * một số trường hợp *, nhưng không phải trong trường hợp chung. Đối với lý do tại sao tôi sử dụng chuỗi ở nơi đầu tiên: * bởi vì câu hỏi đã được thảo luận cụ thể về chuỗi *. –