2016-09-01 23 views
6

Tôi muốn chuyển giá trị rỗng nếu chuỗi rỗng trong khi chuyển đổi từ chuỗi thành gấp đôi. Ai đó có thể giúp tôi với cú pháp? Khi tôi đi sai? Cú pháp hiện tại:Đặt giá trị mặc định thành null khi chuyển đổi thành gấp đôi trong C#

IngredientMinRange = !string.IsNullOrEmpty(MinRange) ? Convert.ToDouble(MinRange) : null 
+2

double là loại giá trị bạn phải làm cho nó có thể vô hiệu nếu bạn muốn gán giá trị rỗng cho nó –

+0

. IngredientMinRange {get; bộ; } đây là sự hủy diệt. – Programmermid

+0

điều này không trả về giá trị rỗng kép: Convert.ToDouble (MinRange) – Rumplin

Trả lời

10

Một double không thể null vì nó là một giá trị gia tăng và không phải là một loại tài liệu tham khảo. Bạn có thể sử dụng một Nullable<double> thay vì:

double? ingredientMinRange = null; 
if(!string.IsNullOrEmpty(MinRange)) 
    ingredientMinRange = Convert.ToDouble(MinRange); 

Nếu bạn sau này muốn giá trị double bạn có thể sử dụng HasValueValue tính:

if(ingredientMinRange.HasValue) 
{ 
    double value = ingredientMinRange.Value; 
} 

Using Nullable Types (C# Programming Guide)


Nếu IngredientMinRange là đã là một Double? -property như nhận xét bạn có thể gán giá trị qua if (như hình trên) hoặc ở trong một dòng, nhưng sau đó bạn phải cast null:

IngredientMinRange = string.IsNullOrEmpty(MinRange) ? (double?)null : Convert.ToDouble(MinRange); 
+0

bạn có muốn sử dụng 'Convert.ToDouble' thay vì' TryParse' khi bạn chuyển đổi từ chuỗi không? (chỉ yêu cầu) là nó nhanh hơn hay bất cứ điều gì? –

+0

@MatthiasBurger: không, tôi muốn 'double.Parse' hoặc' double.TryParse' (nếu đầu vào có thể không hợp lệ). Nhưng OP sử dụng 'Convert.ToDouble' vì vậy tôi đã giả định rằng nó được cho là hợp lệ. Có thể 'Convert.ToDouble' có ích nếu đầu vào là' đối tượng' thay vì 'chuỗi'. –

+0

Ahh được rồi, luôn luôn tốt để có được ý kiến ​​khác :) –

1

gán null đến một đôi bạn phải sử dụng Nullable<double> hoặc double?. Chỉ định phương pháp này bằng phương pháp này tại đây:

decimal temp; 
decimal? IngredientMinRange = decimal.TryParse(MinRange, out temp) ? temp : (decimal?)null; 

thì bạn có thể tiếp tục làm việc với IngredientMinRange. Bạn nhận được giá trị với IngredientMinRange.Value hoặc kiểm tra xem nó có null với IngredientMinRange.HasValue

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