Tôi khá mới đối với .Net và đang xem xét một mảng đối tượng cơ sở sẽ xử lý các kiểu khác nhau như thế nào. Tôi có xu hướng sử dụng kết hợp GetType(). ToString() trong một công tắc để tập trung xử lý sự kiện của tôi vào mã và tôi gặp phải các giá trị trả về sau. Tôi đã nhìn cho một câu trả lời ở đây và các nơi khác (bao gồm cả C# spec) nhưng không thể tìm thấy nơi này là trực tiếp giải quyết:GetType(). ToString() Trả về các ký tự không mong muốn
Code:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Objectify
{
class Program
{
static void Main(string[] args)
{
object[] arrObjects = {"", 0, 0.0M, 'a', new Stack<string>(), new Queue<string>(), new Stack<int>(), new Queue<int>()};
for (int i = 0; i < arrObjects.Length; i++)
{
Console.WriteLine(arrObjects[i].GetType().ToString());
}
}
}
}
Output:
System.String
System.Int32
System.Decimal
System.Char
System.Collections.Generic.Stack`1[System.String]
System.Collections.Generic.Queue`1[System.String]
System.Collections.Generic.Stack`1[System.Int32]
System.Collections.Generic.Queue`1[System.Int32]
Các Phần "1" của các dòng 5 - 8 là bất ngờ từ quan điểm của tôi.
a) Ai đó có thể giải thích những gì đang diễn ra ở đây? b) Có cách nào để dự đoán khi nào các ký tự (hoặc khác) sẽ được đưa vào đầu ra không? Tôi có thể thấy rằng họ có mặt khi một Loại xây dựng được sử dụng, và không phải như vậy khi một loại nội tại được sử dụng.
BTW, đây là câu hỏi đầu tiên của tôi về lưu lượng truy cập. Tôi đã tìm thấy rất nhiều thông tin giá trị ở đây trong vài năm qua. Đây là lần đầu tiên tôi không thể tìm được câu trả lời.
Cũng thử các công cụ như 'typeof (IComparable) .ToString()', 'typeof (IComparable <>). ToString()', 'typeof (IDictionary <,>) .ToString()', 'typeof (Func <,,,,>). ToString() ', v.v. Và với các kiểu lồng nhau bạn có một '+', ví dụ 'typeof (Environment.SpecialFolder) .ToString()', 'typeof (từ điển <,> .KeyCollection) .ToString()' –