Tôi có đoạn mã sau trong C#:concatenating một hành động với một chuỗi sử dụng động
Action a = new Action(() => Console.WriteLine());
dynamic d = a;
d += "???";
Console.WriteLine(d);
và đầu ra là
System.Action ???
trong khi nếu bạn thêm một thay vì một chuỗi để d nó sẽ ném một ngoại lệ.
Bạn có thể giải thích tại sao điều này xảy ra?
nếu tôi sử dụng một số loại khác cho 'a' nó sẽ đưa ra một ngoại lệ –
@OrlandoWilliam: vâng, chắc chắn. Lý do là (tôi đã cố gắng giải thích trong câu trả lời của mình, có lẽ tôi không rõ ràng, xin lỗi) rằng không có _ "chuyển đổi" mặc định _ giữa Hành động và các loại khác nhưng chuỗi ... – Marco
@OrlandoWilliam: Không. Bất kỳ đối tượng có thể được chuyển đổi thành một chuỗi theo cách này. Thử: 'object a = 2; a + = "???"; Ví dụ: Console.WriteLine (a); '. – StriplingWarrior