Перегрузка метода с параметрами одинакового типа

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by CodeSender:), 25 May 2012.

  1. CodeSender:)

    CodeSender:) Elder - Старейшина

    Joined:
    29 Jul 2010
    Messages:
    245
    Likes Received:
    115
    Reputations:
    23
    PHP:
            private string AuthReq(string loginstring passstring proxy null)
            {
                return 
    AuthReq(loginpassstring.Empty, string.Empty, proxy);
            }

            private 
    string AuthReq(string loginstring passstring tknstring proxy null)
            {
                return 
    AuthReq(loginpasstknstring.Empty, proxy);
            }

            private 
    string AuthReq(string loginstring passstring captchaAnswerstring proxy null)
            {
                return 
    AuthReq(loginpassstring.Empty, captchaAnswerproxy);
            }

            private 
    string AuthReq(string loginstring passstring tknstring captchaAnswerstring proxy null)
            {
                   .....
            }
    Будет ругаться, как перегрузить?
     
    1 person likes this.
  2. seosimf

    seosimf Member

    Joined:
    3 Mar 2011
    Messages:
    271
    Likes Received:
    44
    Reputations:
    6
    Кеп говорит что только с другим типом аргументов.
     
  3. CodeSender:)

    CodeSender:) Elder - Старейшина

    Joined:
    29 Jul 2010
    Messages:
    245
    Likes Received:
    115
    Reputations:
    23
    Нет.
     
    1 person likes this.
  4. GRRRL Power

    GRRRL Power Elder - Старейшина

    Joined:
    13 Jul 2010
    Messages:
    823
    Likes Received:
    185
    Reputations:
    84
    Что нет?! Почитать лениво?

    Сам подумай, как компилятор определит, какую функцию вызывать, если у нескольких экземпляров функции и параметры принимаемые, и имя одинаковые?
     
  5. -=Cerberus=-

    -=Cerberus=- κρυπτός γράφω

    Joined:
    29 Apr 2012
    Messages:
    1,321
    Likes Received:
    930
    Reputations:
    391
    сделай классы(структуры) хранящие твои параметры, у них будут разные имена. Вот тебе и перезагрузка операторов
     
  6. CodeSender:)

    CodeSender:) Elder - Старейшина

    Joined:
    29 Jul 2010
    Messages:
    245
    Likes Received:
    115
    Reputations:
    23
    Да ну, это уж явно ***ня получается, лучше буду null передавать...
     
  7. X-rus

    X-rus Member

    Joined:
    22 Dec 2010
    Messages:
    88
    Likes Received:
    22
    Reputations:
    4
    Можно всё разбить на классы и будет гораздо удобнее. Я делал примерно так (реализация может зависеть от задачи, но суть одна):

    PHP:
    public class Account IHttpConnect
    {
        public 
    HttpRequest Request getset; } // Свойство из IHttpConnect
        
        
    public string Login get; private set; }
        public 
    string Password get; private set; }
        public 
    CookieDictionary Cookies get; private set; }
        
    //... Какие-нибудь другие поля/свойства, если нужны.
        

        
    public Account(string loginstring password)
        {
            
    Login login;
                
    Password password;
        }
        
        public 
    AccountStatus Logining(ref Captcha captcha)
        {
            
    // Пробуем залогиниться.
            
            // Если нужно ввести капчу.
            
    {
                
    captcha = new Captcha(
                    
    /*тут нужно указать адрес капчи и дополнительное информацию, если нужно*/);
                return;
            }
            else
            {
                
    captcha null;
            }
        }
    }

    // А теперь используем данный класс.
    Captcha captcha;
    Account account = new Account("Егорыч+++""qwert");

    using (var request = new HttpRequest())
    {
        
    request.UserAgent HttpHelper.RandomUserAgent();
        
    request.Proxy Socks5ProxyClient.Parse("127.0.0.1:1080");
        
    // Можно установить другие параметры запроса.
        
        
    account.Request request;
        
        do
        {
            
    account.Logining(ref captcha);
            
            if (
    captcha != null)
            {
                
    // Получаем ключ от капчи и сохраняем его.
                
    captcha.Key "ololo";
                
    // Далее используем этот ключ при повторном логининге.
            
    }
        }while (
    captcha != null);
    }
    Здесь используется моя библиотека, её, если нужно, можешь скачать ЗДЕСЬ , а в блоге узнать больше информации. ;)
     
    #7 X-rus, 28 May 2012
    Last edited: 28 May 2012