Tôi đã xem xét nhiều câu hỏi tương tự như vậy, nhưng không ai trong số họ thực sự xúc động với những gì tôi muốn làm. Những gì tôi đang cố gắng để làm được đọc từ một nguồn bên ngoài một danh sách các biến mà cũng bao gồm kiểu dữ liệu của họ vào một mảng chuỗi:Phương pháp với nhiều loại trả lại
Ví dụ:
ID/Key Type Value/Data;
varName1 bool true;
varName2 string str;
varName3 int 5;
tôi sau đó lưu trữ đây là những đối tượng vào một cuốn từ điển như các đối tượng có chứa nhiều chuỗi, với ID cũng đóng vai trò là khóa.
Những gì tôi muốn làm bây giờ là tạo ra một phương pháp có sử dụng một câu lệnh switch mà phôi chuỗi vào datatype đúng, và trả về nó mà không cần phải chỉ định bất cứ điều gì trong cuộc gọi phương pháp. Các chức năng nên tìm một cái gì đó như thế này:
public ??? Method(string key)
{
if(dictionary.ContainsKey(ID))
{
Var temp = dictionary[ID];
switch (temp.Type)
{
case "bool":
return Convert.ToBoolean(temp.Value);
case "int"
return Convert.ToInt(temp.Value);
case "string"
return temp.Value;
}
}
return "NULL";
}
các lời gọi phương thức nên tìm một cái gì đó như thế này:
int x = Method(string key);
string word = Method(string key);
boolean isTrue = Method(string key);
Có lẽ tôi đã bỏ lỡ một cái gì đó, nhưng tôi vẫn chưa tìm thấy một cái gì đó thực sự làm điều gì đó khá như thế này. Bất kỳ và tất cả những suy nghĩ về điều này được chào đón là tốt.
Xin lỗi, không có điều gì trong C#. Phương thức có kiểu trả về cố định. Bạn có thể sử dụng 'object' làm kiểu trả về của bạn, nhưng bạn phải cast. – adv12
Bạn sẽ phải thực hiện phương pháp chung để làm việc. Và nó sẽ kết thúc trông giống như 'string word = Phương thức (khóa)' khi bạn sử dụng nó. Bạn cũng phải làm 'bool?' Và 'int?'vì bạn muốn trả về' null' khi không tìm thấy khóa. –
juharr
Nếu giá trị của bạn được lưu trữ dưới dạng 'Đối tượng', bạn có thể làm giá trị' (T)'. Điều gì ngăn cản bạn khỏi phương thức 'string word = (string) (string key);', given, phương thức trả về 'object' –