2008-12-12 28 views
7

Có cách nào để nói điều gì đó như:Có cách nào đơn giản để xác định kích thước loại trong C#?

sizeof (loại)? Hoặc gõ.Size?

Ngay bây giờ tôi đang xem xét sử dụng mã như:

if (type.Equals(typeof(int))) 
    return sizeof(int); 
else if (type.Equals(typeof(long))) 
    return sizeof(long); 

vv, vv, cho tất cả các loại dữ liệu duy nhất.

Phải có giải pháp sạch hơn, phải không?

+0

Bạn có thể giải thích lý do đằng sau những gì bạn muốn làm không? – leppie

+0

Thats vui, tôi gần như đăng câu hỏi chính xác này ngày hôm qua, nhưng không có thời gian. Tôi cần điều tương tự để sử dụng ADO.NET DbParameters. Đôi khi nó buộc bạn phải đặt DbParameter.Size, là kích thước của đối tượng theo byte. Tôi cũng đã có một tuyên bố chuyển đổi lớn như một trong những bạn ban đầu được đăng :) – CodingWithSpike

Trả lời

13
+0

Điều này có vẻ như nó được kích thước, trong bộ nhớ, của một đối tượng cụ thể hoặc giá trị, mà không nhất thiết phải giống như kích thước của một loại. –

+0

Ngoài ra còn có tình trạng quá tải kiểu. Tôi đã nhầm lẫn với phiên bản Object. Sẽ cập nhật ngay – JaredPar

+0

Tuy nhiên, từ tài liệu: "Kích thước được trả về thực sự là kích thước của loại không được quản lý. Kích thước không được quản lý và quản lý của một đối tượng có thể khác nhau. Đối với các loại ký tự, kích thước bị ảnh hưởng bởi giá trị CharSet được áp dụng đến lớp đó. " Tùy thuộc vào trường hợp sử dụng, nó có thể gây hiểu nhầm. –

1

Nếu đây là để truy cập dữ liệu, bạn có thể làm type.GetTypeCode() (mà là một thành viên của IConvertible), mang đến cho bạn một enum tốt đẹp để bật.

-4

Có thể bạn có thể đi Convert.ToString(type.MaxValue, 2).Length/8 ?

Các vấn đề liên quan