Tôi đang bối rối về việc sử dụng ==
trong (C#) khi tôi sử dụng chuỗi chữ như ở đây:bối rối của việc sử dụng == nhà điều hành trong C#
object a="hello";
object b="hello";
so sánh a==b
sẽ thành sự thật.
nhưng khi tôi sử dụng đối tượng như ở đây:
object c=new StringBuilder("hello").ToString();
object d=new StringBuilder("hello").ToString();
so sánh a==b
sẽ là sai lầm.
mặc dù a,b,c,d
tất cả loại System.Object trong thời gian biên dịch và ==
giá trị so sánh toán tử phụ thuộc vào giá trị của chúng trong thời gian biên dịch.
tôi sử dụng phương pháp mở rộng để có được loại varabiles trong thời gian biên dịch:
public static class MiscExtensions
{
public static Type GetCompileTimeType<T>(this T dummy)
{ return typeof(T); }
}
Đối tượng chuỗi nội bộ được so sánh với '==' làm bình đẳng tham chiếu sẽ trả về false (xem https://stackoverflow.com/questions/1766492/overloading-operator-versus-equals). –
Tôi nghĩ rằng bạn đang bối rối hơn về các loại khác nhau trong C#. 'Object',' string' và 'StringBuilder' không giống nhau, đó là lý do tại sao chúng có tên khác nhau. ;) – waka
câu hỏi tương tự ở đây: https://stackoverflow.com/questions/27710665/comparing-values-using-operator – Winnie