Hàm chung C#, không thể chuyển đổi

lập trình


Tôi có chức năng C# này

C#
internal static SortedList<string, string> doSList(string list)
        {
            SortedList<string, string> ret = new SortedList<string, string>();

            char[] charSeparators = new char[] { '|' };
            string[] l1 = list.Split('|');
            if (l1.Count() > 0)
            {
                foreach (string ll1 in l1)
                {
                    string[] l2 = ll1.Split(';');

                    if (l2.Count() == 2)
                    {
                        {
                            //ret.Add(Convert.ChangeType(l2[0], typeof(key)), Convert.ChangeType(l2[1], typeof(value)));
                            ret.Add(l2[0], l2[1]);
                        }
                    }
                }
            }
            return ret;
        }

sau đó tôi yêu cầu một lúc sau:

C#
internal static SortedList<string, int> doSList2(string list)

Những gì tôi đã thử:

Thế là tôi đã làm được, nhưng anh bạn VB.net đã làm được

VB
Friend Shared Function doSList(Of key, value)(ByVal list As String) As SortedList(Of key, value)

nhưng tôi không thể làm được:

C#
internal static SortedList<TKey, TValue> doSList2(string list)

Lỗi báo không tìm thấy TKey, không tìm thấy TValue, sau đó tôi chỉ thử với T, sau đó không tìm thấy T.

nó có thể là câu hỏi của người mới, xin vui lòng ai đó hướng dẫn tôi điều này, có liên kết nào để tìm hiểu không?

Giải pháp 1

Giả sử rằng Key luôn là một string vì đầu vào có định dạng giá trị được phân tách bằng dấu phẩy; một cái gì đó dọc theo những dòng này sẽ làm được điều đó.

C#
public static SortedList<string, TValue> DoSList<TValue>(string csv) where TValue : IConvertible
  {
    SortedList<string, TValue> target = new ();
     string[] firstSplitArray = csv.Split('|');
      if (firstSplitArray.Length > 0)
       {
        foreach (string t1Instance in firstSplitArray)
         {
          string[] secondSplitArray = t1Instance.Split(';');

          if (secondSplitArray.Length == 2)
           {
            {
              var result= (TValue)Convert.ChangeType(secondSplitArray[1], typeof(TValue));
              target.Add(secondSplitArray[0], result);
            }
           }
         }
       }
     return target;
   }

Nó có thể được sử dụng như thế này: –

C#
string testStr = "Y;5|X;6|W;7|V;8|A;1|B;2|C;3|D;4";
 SortedList<string, int> sortedList = DoSList<int>(testStr);
 foreach (var kvp in sortedList)
 Console.WriteLine($"{kvp.Key}:{kvp.Value}");

コメント

タイトルとURLをコピーしました