C# सामान्य फ़ंक्शन, कनवर्ट करने में असमर्थ


मेरे पास यह 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;
        }

फिर मुझे कुछ समय बाद आवश्यकता होगी:

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

मैंने क्या प्रयास किया है:

तो मैंने यह किया, लेकिन VB.net साथी ऐसा करने में सक्षम था

वी.बी
Friend Shared Function doSList(Of key, value)(ByVal list As String) As SortedList(Of key, value)

लेकिन मैं ऐसा करने में सक्षम नहीं हूं:

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

त्रुटि कहती है कि TKey नहीं मिला, TValue नहीं मिला, फिर मैंने केवल T के साथ प्रयास किया, फिर T नहीं मिला।

यह नौसिखिया प्रश्न हो सकता है, कृपया कोई मुझे इस पर मार्गदर्शन दे, कोई लिंक जहां से सीखूं?

समाधान 1

यह मानते हुए कि कुंजी हमेशा एक है string चूंकि इनपुट में अल्पविराम से अलग किया गया मान प्रारूप है; इन पंक्तियों के अनुरूप कुछ करना चाहिए।

सी#
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;
   }

इसका उपयोग इस प्रकार किया जा सकता है:-

सी#
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をコピーしました