[C#] Вызов метода, другого класса?

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by kokoulin, 19 Mar 2012.

  1. kokoulin

    kokoulin Member

    Joined:
    8 Jan 2011
    Messages:
    65
    Likes Received:
    5
    Reputations:
    5
    Что то у меня тупняк :confused:
    у меня есть два класса в разных файлах и неймспейсах

    из первого метода я пытаюсь передать во второй данные
    и благополучно получаю ошибку "An object reference is required for the non-static field, method, or property"
    что бы ее избежать нужно сделать метод 2 статическим но тогда я не смогу из него обратиться к методу лога который не может быть статическим ибо он оперирует с интерфейсом.
    из этого возникает пара вопросов:
    Как создать не статический метод, чтобы его можно было бы вызвать из другого класса?
    как из статического метода опереривать с не статическим?

    класс 1
    PHP:
    namespace WindowsFormsApplication1
    {
        public 
    partial class Form1 Form
        
    {
            
            private 
    void button1_Click(object senderEventArgs e)
            {
                
    VKwork.login(loginpass);
            }
            
            public 
    void log(string s)
            {
                if (
    InvokeRequiredBeginInvoke(new Action(() => { textBox3.AppendText("\r\n"); }));
                else 
    textBox3.AppendText("\r\n");
            }
        }
    }
    класс 2
    PHP:
    namespace qwe
    {
        public class 
    qweqwe
        
    {
            public 
    string login(string emailstring pass)
            {
                  
    string a email+pass
                  
    if(== ""){WindowsFormsApplication1.Form1.log("qwe");}// тут мне внезапно хочется написать в лог
                  
    return(a)
            }
         }
    }
    з.ы. код отформатирован тегом php ибо я не воспринимаю не подсвечены код)
     
    #1 kokoulin, 19 Mar 2012
    Last edited: 19 Mar 2012
  2. seosimf

    seosimf Member

    Joined:
    3 Mar 2011
    Messages:
    271
    Likes Received:
    44
    Reputations:
    6
    Создать экземпляр класса и вызвать метод.
    Никак.
    Смотрим в сторону делегатов и событий.
     
    #2 seosimf, 19 Mar 2012
    Last edited: 19 Mar 2012
  3. kokoulin

    kokoulin Member

    Joined:
    8 Jan 2011
    Messages:
    65
    Likes Received:
    5
    Reputations:
    5
    В эту сторону сейчас и смотрю ну сужя по всему нужно поспать
     
  4. Spot

    Spot Elder - Старейшина

    Joined:
    1 Mar 2007
    Messages:
    461
    Likes Received:
    38
    Reputations:
    1
    Что бы воспользоваться методом, тебе нужно создать инстанцию класса перед использованием, пример:
    FunkOptions CheckBoxUpper = new FunkOptions();
    По поводу статичный-нестатичный. Если возникает проблема, решение просто - сделать оба-трое динамичными.

    Да, проверяй код, "string a = email+pass" чего не хватает, не?";"
     
    1 person likes this.
  5. kokoulin

    kokoulin Member

    Joined:
    8 Jan 2011
    Messages:
    65
    Likes Received:
    5
    Reputations:
    5
    1. к этому решению и пришел в итоге но оно мне не очень нравиться
    2. код из головы писался так что могут быть ошибки)
     
  6. $asha

    $asha New Member

    Joined:
    6 Jul 2011
    Messages:
    14
    Likes Received:
    4
    Reputations:
    0
    пользуйся стрингбилдером или стрингформатом, чтобы стек не перегружать.
    P.S.
    "нравиТСЯ"
    "ЧТОБЫ"
     
  7. kokoulin

    kokoulin Member

    Joined:
    8 Jan 2011
    Messages:
    65
    Likes Received:
    5
    Reputations:
    5
    Грядки экскаватором копать не принято)
    а по поводу орфографии каюсь моя слабость(
     
  8. kokoulin

    kokoulin Member

    Joined:
    8 Jan 2011
    Messages:
    65
    Likes Received:
    5
    Reputations:
    5
    в общем всем спасибо я справился)
     
  9. Kavabango

    Kavabango New Member

    Joined:
    14 Nov 2008
    Messages:
    44
    Likes Received:
    0
    Reputations:
    0
    Как раз наоборот. Многие забывают что string это reference type у которого просто перегружен оператор +. Надо помнить что сам этот оператор не меняет исходную строку а выделяет место под новую. И так при каждом вызове +. Теперь если ты будешь вызывать этот оператор часто, получишь много выделенного и еще не собранного мусора.
    Почитай про StringBuilder.Append он как раз решает эту проблему.
     
  10. kokoulin

    kokoulin Member

    Joined:
    8 Jan 2011
    Messages:
    65
    Likes Received:
    5
    Reputations:
    5
    Спасибо, по большому счету я почти всегда использую string.Format