Tại sao loại dữ liệu chuỗi có phương thức .ToString()
?Tại sao loại chuỗi có phương thức .ToString()?
Trả lời
Loại System.String
, như almost tất cả các loại trong .NET, có nguồn gốc từ System.Object
. Object
có phương thức ToString()
và do đó String
kế thừa phương pháp này. Nó là một phương thức ảo và String
ghi đè nó để trả về một tham chiếu đến chính nó thay vì sử dụng thực thi mặc định để trả về tên của kiểu đó.
Từ Reflector, đây là việc thực hiện ToString trong Object
:
public virtual string ToString()
{
return this.GetType().ToString();
}
Và đây là ghi đè trong String
:
public override string ToString()
{
return this;
}
String là một đối tượng, nó không phải là một kiểu dữ liệu. Vì String là một đối tượng, nó kế thừa từ đối tượng Root ToString().
Nó giống như trong Java, Objective-C hoặc Scala :)
'int' có một' phương pháp ToString' cũng ... –
nó ngạc nhiên cho tôi :), tôi chỉ nghĩ rằng C# cũng giống như Java, không có phương thức toString cho những điều :) – vodkhang
nó không được viết hoa vì nó là bí danh. Sau khi biên dịch, bí danh đó sẽ được chuyển thành Chuỗi được viết hoa – vodkhang
này thậm chí còn đúng đối với java, tôi nghĩ rằng hầu hết các Object Oriented ngôn ngữ lập trình có điều này, một chuỗi đại diện của các đối tượng trong câu hỏi, vì mỗi class bạn tạo theo mặc định nó extedns từ Object do đó dẫn đến việc có phương thức toString(), hãy nhớ nó chỉ áp dụng cho các đối tượng không cho các kiểu premitive.
Như Mark đã chỉ ra, nó chỉ trả về một tham chiếu cho chính nó. Nhưng, tại sao điều này lại quan trọng? Tất cả các kiểu cơ bản sẽ trả về một biểu diễn chuỗi của chính chúng. Hãy tưởng tượng chức năng ghi nhật ký hoạt động như sau:
public void Log(object o) {
Console.WriteLine(o.ToString());
}
Điều này cho phép bạn chuyển bất kỳ loại cơ bản nào và đăng nhập nội dung của nó. Nếu không có chuỗi trả về chính nó, nó sẽ chỉ đơn giản là in ra "String" chứ không phải là nội dung của nó. Bạn cũng có thể làm điều tương tự với chức năng mẫu.
Hãy nghĩ điều này thật ngớ ngẩn? Đó là cơ bản những gì các chức năng định dạng chuỗi làm. Đó gọi là "ToString" khi bạn làm điều này:
Console.WriteLine("{0}", myString);
Bất kỳ đối tượng trong C# có một chuỗi phương pháp, mặc dù tôi không thể nghĩ ra một lý do tại sao người ta sẽ đúc một chuỗi thành một chuỗi tại thời điểm này ToString() được thừa kế từ kiểu đối tượng, mà tất nhiên là một chuỗi là một ví dụ về.
Bạn sẽ nhận được ngoại lệ tham chiếu Null nếu chuỗi của bạn là NULL và bạn sử dụng. ToString();
Sau đây sẽ ném:
string.Format("msgBoxTitle = {0}", msgBoxTitle.ToString())
tốt nhất để chỉ cần viết ... Điều này sẽ không ném.
string.Format("msgBoxTitle = {0}", msgBoxTitle)
- 1. Giao diện có phương thức toString không?
- 2. Tại sao StringBuilder không có phương thức IndexOf?
- 3. Tại sao Moq không chạy phương thức ToString bị ghi đè?
- 4. Tại sao phương thức toString() được gọi khi tôi in một đối tượng?
- 5. Thêm một chuỗi trống vs toString - tại sao nó xấu?
- 6. Có sự khác biệt nào giữa phương thức ToString và truyền tới chuỗi không?
- 7. Tại sao XElement không có phương thức GetAttributeValue?
- 8. Tại sao chữ số không có quyền truy cập vào các phương thức Số?
- 9. Tại sao ngầm gọi toString trên một loại giá trị gây ra một hướng dẫn hộp
- 10. Tại sao có một trình lặp phương thức() trên java.util.Collection
- 11. ToString trên chuỗi rỗng
- 12. Phương thức .ToString() hoạt động như thế nào?
- 13. Java enum - tại sao sử dụng toString thay cho tên
- 14. Tại sao 2..toString() hoạt động?
- 15. Tại sao các phương thức của String.prototype có sẵn cho các chuỗi ký tự?
- 16. Tại sao có phương thức equals riêng cho các bộ?
- 17. Tại sao phải có phương thức ClassInitialize là tĩnh?
- 18. Tại sao AlertDialog.Builder không có phương thức setOnDismissListener hoặc setOnShowListener?
- 19. Tại sao C# HashSets có một phương thức Distinct()
- 20. Tại sao NSArray không có phương thức firstObject?
- 21. Tại sao ngôn ngữ Python không có phương thức writeln()?
- 22. Tại sao ObservableCollection không có phương thức RemoveAll?
- 23. Tại sao Magento có các phương thức _construct và __construct?
- 24. Phương thức toString() của String có bất kỳ mục đích thực tế nào không?
- 25. Phương thức Arduino map() - tại sao?
- 26. Tại sao có thể gọi phương thức trên phương thức giao diện Java? [So sánh]
- 27. Tại sao chuỗi được trích dẫn khớp với chữ ký phương thức bool trước chuỗi std ::?
- 28. tại sao sử dụng int âm cho hoạt động mod trong phương thức toString của lớp Integer trong java src
- 29. Tại sao phương thức toString() hoạt động khác nhau giữa mảng và đối tượng ArrayList trong Java
- 30. Tại sao không có loại nguyên thủy cho Chuỗi?
xuất sắc trả lời –