2013-03-06 33 views
5

Thật khó để tôi nắm bắt chính xác câu trả lời đang thực hiện. Ví dụ: theo phương pháp này ...Chính xác thì một câu lệnh trả về làm gì trong C#?

public int GivePoints(int amount) 
    { 
     Points -= amount; 
     return amount; 
    } 

Ngay cả khi tôi đặt bất kỳ số nguyên ngẫu nhiên nào sau khi trả lại, phương thức GivePoints vẫn thực hiện tương tự. Vậy câu lệnh trả lại đang làm gì?

+2

Tôi không chắc chắn cách trả lời câu hỏi này ngoài việc nói rằng nó * trả về * một giá trị cho phương thức người gọi. –

Trả lời

0

Trong ví dụ, hàm trả về số chính xác mà bạn đang gửi đến. Trong trường hợp này, bất kỳ giá trị nào bạn vượt qua là amount. Vì vậy, sự trở lại trong mã hiện tại của bạn là một chút vô nghĩa.

Vì vậy, trong ví dụ của bạn:

int x = GivePoints(1000); 

x sẽ bằng 1000

+0

Bạn nên giải thích rằng bất cứ điều gì sau khi trả lại sẽ không thực thi, mà dường như là câu hỏi hóc búa thực sự của người hỏi. – Ron

3

Return sẽ thoát khỏi chức năng khi gọi nó. Dù dưới mệnh đề trả về sẽ không được thực thi.

Về cơ bản, return cho biết rằng bất kỳ thao tác nào mà chức năng được cho là biểu mẫu đã được tạo trước và chuyển kết quả của thao tác này trở lại (nếu có) cho người gọi.

4

return sẽ trả lại quyền kiểm soát từ phương pháp hiện tại cho người gọi và cũng trả lại bất kỳ đối số nào được gửi cùng với nó. Trong ví dụ của bạn, GivePoints được định nghĩa để trả về một số nguyên và chấp nhận một số nguyên làm đối số. Trong ví dụ của bạn, giá trị trả lại thực sự giống như giá trị đối số.

Giá trị trả lại được sử dụng từ một nơi khác trong mã của bạn gọi phương thức đã xác định, GivePoints trong ví dụ này.

int currentPoints = GivePoints(1); 

sẽ có nghĩa là currentPoints được gán giá trị của 1.

Điều này phá vỡ xuống đến là GivePoints được đánh giá. Việc đánh giá GivePoints dựa trên phương thức trả về. GivePoints trả về đầu vào, do đó, GivePoints sẽ đánh giá 1 trong ví dụ trên.

+2

+1 Một điều thú vị nữa có thể là khái niệm 'Stack': các phương thức được gọi trên một ngăn xếp và câu lệnh' return' thoát khỏi phương thức hiện tại, trả về luồng điều khiển (và thường là một giá trị) về phương thức trước đó ngăn xếp. – danludwig

+0

Ngoài ra, không có mã nào xuất hiện sau khi câu lệnh trả về được chạy sẽ được đánh giá. Đó là lý do tại sao giá trị "số nguyên ngẫu nhiên" của bạn bị bỏ qua. – Heather

0

chỉ là một phỏng đoán cho mục tiêu ban đầu của bạn

public int GivePoints(int amount) 
{ 
    Points -= amount; 
    return Points; 
} 

để trở lại sẽ trả về giá trị được cập nhật tại các điểm

nếu đây không phải là trường hợp của bạn mã nên được

public void GivePoints(int amount) 
{ 
    Points -= amount; 
} 
Các vấn đề liên quan