2015-08-31 2 views
-4

Я хочу создать функцию с C# которые возвращаются для меня список IP и порт функция такова:Кортеж содержит список буксирный в C#

public Tuple<string,int> loadSocks() 
{ 
    var listip = new List<string>(); 
    var listprt = new List<int>(); 
    var input = Path.GetFullPath(Path.Combine(Application.StartupPath, "Exploit1/socks-list.txt")); 
    var r = new Regex(@"(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}):(\d{1,5})"); 
    foreach (Match match in r.Matches(input)) 
    { 
     string ip = match.Groups[1].Value; 
     int port = Convert.ToInt32(match.Groups[2].Value); 
     listip.Add(ip); 
     listprt.Add(port); 
     Tuple<List<string>, List<int>> tplLst = new Tuple<List<string>, List<int>>(listip, listprt); 
     Tuple<string, int> tplSum = Add(tplLst); 

    } 
    return tplLst; 
} 

Я использую кортеж, я добавляю список буксирный в этом кортеж, но он дал мне ошибку в Tuple tplSum = Add (tplLst); в Add (tplLst).

Что мне делать?

+1

Что делает «Добавить (tplLst)» делать? – wudzik

+0

@ wudzik он добавляет кортеж, который содержит список буксировки другому кортежу, который является tplSum в моей функции –

+2

Этот вопрос не содержит всю необходимую вам информацию; Если вы сообщите об ошибке, конечно, дайте нам полную копию ошибки. Кроме того, ваше название очень плохое. Тот факт, что вы написали «проблема» вместо «проблемы», показывает, что вы столкнулись с автоматической системой обнаружения титров StackOverflows, которая ничего не сообщает о проблеме. Попытайтесь более подробно узнать, в чем проблема, затем задайте точный вопрос. Вы получите гораздо лучшие ответы таким образом! –

ответ

1

Я рекомендую упростить ваш код. Вместо того, чтобы использовать кортеж, который часто уменьшает читаемость, я бы создал тип для вашей цели.

public class BiningInfo 
{ 

    public IPAddress IpAddress { get; set;} 

    public int Port { get; set;} 

} 


public List<BiningInfo> loadSocks() 
{ 
    var result = new List<BiningInfo>(); 

    var input = Path.GetFullPath(Path.Combine(Application.StartupPath, "Exploit1/socks-list.txt")); 
    var r = new Regex(@"(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}):(\d{1,5})"); 
    foreach (Match match in r.Matches(input)) 
    { 
     string ip = match.Groups[1].Value; 
     int port = Convert.ToInt32(match.Groups[2].Value); 

     BiningInfo bi = new BiningInfo(); 
     bi.IpAddress = IPAddress.Parse(ip); 
     bi.Port = port; 
    } 
    return result; 
} 
+0

Я не понимаю публичного IpAddress IpAddress {get; set;} public int Port Port {get; set;} this properties Я создаю новый класс IpAddress и класс Port –

+0

@C Sharper, можете ли вы добавить комментарий в код –

+0

Извините, я сделал некоторую опечатку, я обновил код. .NET Framework имеет класс IPAddress (см. Https://msdn.microsoft.com/en-us/library/system.net.ipaddress(v=vs.110).aspx). Свойством 'Port' является' int'. –

0

Надеюсь, у меня есть точка. Я думаю, что следующий код, что вы ищете:

public List<Tuple<string, int>> loadSocks() 
{ 
    List<Tuple<string, int>> result = new List<Tuple<string, int>>(); 
    var input = Path.GetFullPath(Path.Combine(Application.StartupPath, "Exploit1/socks-list.txt")); 
    var r = new Regex(@"(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}):(\d{1,5})"); 
    foreach (Match match in r.Matches(input)) 
    { 
     string ip = match.Groups[1].Value; 
     int port = Convert.ToInt32(match.Groups[2].Value); 
     result.Add(new Tuple<string,int>(ip,port)); 
    } 
    return result; 
} 
+0

это отлично работает, как do для функции Call для возврата мне один ip и его порт –

+0

@CatSteven вы можете вернуть список с одним элементом. результат [0] .Item1 & item2 –

+0

@ Mohammad Chamanpara, если я хочу сделать boucle, что он дает мне все время новый ip и его порт, что я должен делать со своим братом –

0

Я считаю, что вы пытаетесь вернуть список кортежей. Измените подпись своей функции, чтобы вернуть список. Инициализируйте переменную, чтобы удерживать результат. Затем добавьте к нему каждую комбинацию ip/port. Наконец, верните результат.

public List<Tuple<string,int>> loadSocks() 
{ 
    var result = new List<Tuple<string, int>>(); 

    var input = Path.GetFullPath(Path.Combine(Application.StartupPath, "Exploit1/socks-list.txt")); 
    var r = new Regex(@"(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}):(\d{1,5})"); 

    foreach (Match match in r.Matches(input)) 
    { 
     string ip = match.Groups[1].Value; 
     int port = Convert.ToInt32(match.Groups[2].Value); 

     result.Add(new Tuple<string,int>(ip, port)); 
    } 

    return result; 
} 
+0

, если я хочу сделать boucle, который он мне дал все время новый ip и его порт, что я должен делать с моим братом. –