[ad_1]
この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; }
それから、しばらくしてから要求します。
C#
internal static SortedList<string, int> doSList2(string list)
私が試したこと:
それで私はそれをしましたが、VB.net仲間はそれを行うことができました
VB
Friend Shared Function doSList(Of key, value)(ByVal list As String) As SortedList(Of key, value)
しかし、私にはできません:
C#
<pre>internal static SortedList<TKey, TValue> doSList2(string list)
エラーは、TKey が見つかりません、TValue が見つかりませんと言うので、T のみで試してみましたが、T が見つかりませんでした。
初心者の質問かもしれません。誰かが私をこれに導いてください。どこで学べるリンクはありますか?
解決策 1
キーが常に string
入力はカンマ区切り値形式であるため、 これらの線に沿った何かがうまくいくはずです。
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; }
次のように使用できます:-
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}");
[ad_2]
コメント