2011-10-27 37 views
6
int salesTeamId = person == null ? -1 : person.SalesTeam.Id; 

Từ những gì tôi có thể mảnh với nhau:Ai đó có thể giải thích dòng mã này?

  1. int SalesTeamId là một người thay đổi và đang được gán cho biến.

Sau đó tôi bị mất. Bất kỳ hướng dẫn nào?

Trả lời

12

Đây là một tuyên bố ternary. Tôi đã dịch nó thành một khối if/else để bạn có thể đọc được.

int salesTeamId; 

if(person == null) 
{ 
    salesTeamId = -1; 
} 
else 
{ 
    salesTeamId = person.SalesTeam.Id; 
} 
+0

@Dylan: Cảm ơn bạn đã chỉ ra những tài liệu tham khảo .SalesTeam bỏ lỡ – Akron

8

Đó là the Ternary operator. Đó là một cách viết tắt if tuyên bố tương đương với:

int salesTeamId; 
if(person == null) 
{ 
    salesTeamId = -1; 
} 
else 
{ 
    salesTeamId = person.SalesTeam.Id; 
} 
1

Nếu người là null, sau đó salesTeamId được gán -1. Nếu người đó là null, thì salesTeamId được chỉ định person.SalesTeam.Id.

Toán tử bậc ba là một câu lệnh if-then-else được nhúng vào một dòng (thường là! Nó có thể được trải rộng trên nhiều dòng, nhưng điều đó lại bị đánh bại một chút).

Nó có thể xóa mọi thứ lên để thêm một số dấu ngoặc:

int salesTeamId = (person == null ? -1 : person.SalesTeam.Id); 

Các giả sau đây cũng có thể giúp:

int salesTeamId = (IF person == null THEN USE -1 ELSE USE person.SalesTeam.Id); 
2

nó một tiềm ẩn câu lệnh if (gọi là một nhà điều hành ternary).

Về cơ bản, kiểm tra xem người đó có là không, trả lại -1 người trả lại khác.SalesTeam.id. Giá trị trả về sau đó được gán trực tiếp cho biến salesTeamId.

int salesTeamId; 
if(person == null) 
{ 
salesTeamId = -1; 
} 
else 
{ 
salesTeamId = person.SalesTeam.Id 
} 

là trực tiếp tương đương

2

này tương đương với

int salesTeamId; 
if (person == null) 
    salesTeamId = -1; 
else 
    salesTeamId = person.SalesTeam.Id; 

Kiểm tra ?: Operator (C#)

4

Điều đó có nghĩa,

int salesTeamId; 

if (person == null) 
    salesTeamId = -1; 
else 
    salesTeamId = person.SalesTeam.Id; 
3

Nó được gọi là các conditional operator.

Toán tử điều kiện (? :) là toán tử bậc ba (phải mất ba toán hạng). Toán tử điều kiện hoạt động như sau:

  • Toán hạng đầu tiên được chuyển hoàn toàn sang bool. Nó được đánh giá và tất cả các tác dụng phụ được hoàn thành trước khi tiếp tục.
  • Nếu toán hạng đầu tiên ước tính là đúng (1), toán hạng thứ hai được đánh giá.
  • Nếu toán hạng đầu tiên ước tính sai (0), toán hạng ba được đánh giá.

dụ của bạn là tương đương với mã này:

int salesTeamId; 
if (person == null) 
{ 
    salesTeamId = -1; 
} 
else 
{ 
    salesTeamId = person.SalesTeam.Id; 
} 
Các vấn đề liên quan