---
# System prepended metadata

title: Untitled

---

Переходи на строку 60 к Жене/Жёнам

```
class Talker {
    
 public static int BlahBlahBlah(string thingToSay, int numberOfTimes)
```
> [BlahBlahBlah это метод его тип возвращаемого значения - число, 
если бы я писал public static void - тогда не нужно было бы указывать int так? 
ведь он ничего не возвращает? 
а парметры в скобках это входные параметры которые мы ему задаем?]
```
public class MessageBox{
    string name;
    public Show(string s){
        
    }
    
    

}




{
 string finalString = “”;
 for (int count = 1; count <= numberOfTimes; count++)
 {
 finalString = finalString + thingToSay + “\n”;
 }
 MessageBox.Show(finalString);
 MessageBox.Show(finalString.Length);
``` 
> [почему здесь выводим данные которые у нас есть в переменной finalString? 
ведь методу BlahBlahBlah нужно число - мы ведь и ищем это некое число?
а мы тут берем и выводим строковые параметры переменной - логичнее было бы 
вывести переменную finalString.Length ведь мы итоговая цель это подсчитать количество знаков в переменной finalString, нет разве?]
```
return finalString.Length;
 ```
> [ретурн возвращает переменную finalString.Length в метод BlahBlahBlah? 
почему нужна такая конструкция, разве операторы не есть решения метода BlahBlahBlah 
и вся суть всей этой конструкции это нахождение решения для метода BlahBlahBlah???
тут возможно можно было бы сказать что код не знает какую именно переменную нужно передать в оператор
BlahBlahBlah - но ответ кроется в следущей странице где мы сходу делаем такую манипуляцию:
int finalString.Length = BlahBlahBlah() - вот ж понятнаая и простая консрукция - программа знает что очевидно  переменная finalString.Length это и есть ответ
]
```
 }
}
```

```


////


public class Wife{
        int age;
        public string name;
        bool isMarried;
        
        public Wife(){}//Default Constructor, 
        //его не обязательно писать, компилятор сам его создает автоматически.
        //При создании экземпляра класса у нас 
        //есть выбор какой конструктор использовать
        public Wife(string Sname, int Iage){//Наш конструктор, такой какой мы хотим
        //Возьми ЭТОТ объект, и установи его имя на Sname
            this.name = Sname;
            //Возьми ЭТОТ обьект.возраст и установи его на Iage
            this.age = Iage;
        }
    
        // void saw(Husband h){
        //     Console.WriteLine("Go wash the dishes");
        // }
    
    }
    internal class Program
    {
        //void marry(Wife zhena, Husband h){
        //    zhena.isMarried = true;
        //    h.isMarried = true;
        //}
        public static void Main(string[] args)
        {
            Wife wife1 = new Wife();
            Console.WriteLine(wife1.name);
        }
    }

////

Wife wife1 = new Wife();
Wife wife2 = new Wife("ursula", 35);
Husband husband = new Husband();
marry(alina,husband);

    while(husband.isMarried){
        alina.saw(husband);
        if(husband.wantsADivorce?){
            husband.isMarried = false;
        }
    }


//This method paints an object some color
int paint(Button b, Color a){
    
}



            
private void button1_Click(object sender, EventArgs e);

int main(){
    ///
    button1_Click(button12, eventArguments);
    button1_Click(button12, eveArg2);
    
}

g


```
onlinegdb.com
```
using System;
class HelloWorld {
  public class Wife{
        int age;
        public string name = "alina";
        bool isMarried;
        public Wife(){}
        public Wife(string Sname, int Iage){
            this.name = Sname;
            this.age = Iage;
        }
    
        // void saw(Husband h){
        //     Console.WriteLine("Go wash the dishes");
        // }
    }
    internal class Program
    {
        // public void marry(Wife zhena, Husband h){
        //     zhena.isMarried = true;
        //     h.isMarried = true;
        // }
        //
        public static void Main(string[] args)
        {
            Wife wife1 = new Wife();
            Console.WriteLine(wife1.name);
        }
    }
}

```

```
class Talker {

    
    

     public int static BlahBlahBlah(string thingToSay, int numberOfTimes)
     {
     string finalString = “”;
     for (int count = 1; count <= numberOfTimes; count++)
    {
     finalString = finalString + thingToSay + “\n”;
     }
     MessageBox.Show(finalString);
     return finalString.lenght; 
     Console.WriteLine("Hello");
 }
}



using "myFile.cs"

namespace WindowsFormsApp2
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        private void button1_Click(object sender, EventArgs e)
        {
            int len = Talker.BlahBlahBlah(textBox1.Text, numericUpDown1.Value);
            MessageBox.Show("The message lenght is" + len);
        }
        
                 }
}



using System.Windows.Forms;

```






		

{
public static void Main (String args[])
{
string [] shmotki = new string [100] ;
men [] gruzchiki = new men [10];//так скорее всего не получится,но нужно проверить. 

Pereezd pervogomaya = new Pereezd();
Dom apartment = new Dom();

pervogomaya.perenosShmotok(apartament, gruzchiki[]);
}

class Pereezd;
{
     public void perenosShmotok () ///
		{
        bool result;
               // тут я использую наверное какой нибудь цикл который будет проверять все ли шмотки перехали на новый адресс. 
	       if( result == true)  
                  {
       MessageBox.Show("переезд выполнен успешно"); /// показываю результат
       }
       class Dom();
       {
       //можешь оставить как есть
       ///я хз что я тут должен делать.  тут просто надо описать поля чтоли для создания нового экземпляра в параметрах?
       }


//программа не скомпилируется. 
//Нельзя создавать методы в мейне, также как нельзя написать механику внутри игры, ты не можешь создать новое движение пока играешь в игру. 
// Pereezd pervogomaya = new Pereezd();
//Dom apartment = new Dom();
//нужно создать массив грузчиков 
//
//ты должен только вызвать метод у созданного переезда
//pervogomaya.perenosShmotok(apartament, gruzchiki);



проверка кода программы

namespace WindowsFormsApp9
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        LabelBouncer[] bouncers = new LabelBouncer[3]; ///создаем новый экземпляр массива c именем bouncers
**    //новый массив обьектов
**    
    
private void ToggleBouncing (int index, Label labeltobouce){   // создаем метод с двумя входными параметрами: числом index и ссылкой на объект класса
            if (bouncers[index] == null)  //** если в элементе массива index ничего нет**
            //если в массиве под индексом пусто
            { 
                bouncers[index] = new LabelBouncer();  /// тогда в элементе массива index создаем ссылку на новый объект LabelBouncer. Здесь я не могу понять такой момент: bouncers[index] это и есть ссылка (и по сути имя) нового объекта?->**Верно** Или ссылка на новый объект у нас идет следующей строкой???
                bouncers[index].MyLabel = labeltobouce; ///**Берем наш созданный баунсер, который находится в массиве под индексом [индекс] и устанавливаем его лейбл**  тут мне очень сложно разобраться: MyLabel это поле, которое одновременно является ссылкой на объект класса Label**Верно**, которое сейчас находистя в одном из элементов массива, и этому элементу массива добавляется новая ссылка  labeltobouce получается?
            }
            else /// иначе
            {
                bouncers[index] = null; /// удалить все данные которые содержатся в элементе bouncers[index]
            }
                    
        
        }
private void button1_Click(object sender, EventArgs e)
        {
            ToggleBouncing(0, label1);  /// тут соответственно при нажатии на кнопку вызывается метод ToggleBouncing куда передаются два входящих параметра: число index равно 0, а ~~переменная~~**параметр** labeltobouce которая принадлежит классу Label присваивается значение label1 **Не совсем**
//**передаем обьект label1**
}

private void button2_Click(object sender, EventArgs e)
        {
            ToggleBouncing(1, label2);  /// тоже самое смотри выше
        }

private void button3_Click(object sender, EventArgs e)
        {
            ToggleBouncing(2, label3);  /// тоже самое смотри выше
        }

private void timer1_Tick(object sender, EventArgs e)
        {
for (int i =0; i<3; i++)  /// вот этот момент мне абсолютно не понятен: нажатие на кнопку является событием, при возникновении которого запускается все что там есть ниже - а вот этот цикл работает с момента запуска программы получается? получается что у меня парралельно два куска программы работают - один циклично перебирает значения а второй запускает методы которые вписаны после нажатия на кнопку?**Вышли мне название книги, чтобы тебе помочь мне нужно видеть программу в учебнике.**
            {
                if (bouncers[i] != null) /// если  элемент массива bouncers[i] (i в данном случае будет равен одному из чисел входящих параметров index метода ToggleBouncing,**Нет, i равен тому i который в for** поэтому это по сути просто еще одна ссылка на одну из ячеек массива bouncers) не пустой тогда...
                {
                    bouncers[i].Move(); ///вот тут я совершенно путаюсь, у нас ведь массив это по сути набор ссылок на три объекта, у которых уже заранее прописаны методы, просто каждой из при нажатии на клавишу передается свой входящий параметр... так вот мы просто создаем три объекта bouncers[~~1~~**0**], bouncers[~~2~~**1**], bouncers[~~3~~**2**] (да я знаю что это только ссылки, а не сами объекты, но этого ведь одновременно и их ярлыки/имена, ведь так **Да, ссылки на эти обьекты**?), затем в нужном нам объекте (выбирается через переменную i) выполняем метод Move...
                }
            }
        }
    }
    class LabelBouncer   /// ну собсна сам шаблон наших будущих объектов bouncers[1], bouncers[2], bouncers[3] которые еще не созданы
    {
        public Label MyLabel;  /// поле, объявляем переменную MyLabel которая одновременно является ссылкой на объект  Label... 
        public bool GoingForward = true;  /// поле, является булевой переменной, присваваем значение  true
        public void Move()  /// метод Мув, без входных параметров
        {
            if (MyLabel != null)  /// если поле MyLabel не является пустым, т.е. создан новый объект класса Label тогда
            {
                if (GoingForward == true) /// если булевая переменная имеет значение true, тогда
                {
                    MyLabel.Left += 15;  /// свойство Left объекта на который ссылается MyLabel увеличить на 15
                    if (MyLabel.Left > MyLabel.Parent.Width - MyLabel.Width) /// дальше ниче особо интересного, расписывать смысла нет
                    { GoingForward = false; } 

                }

                else
                {
                    MyLabel.Left -= 5;
                    if (MyLabel.Left <= 0)
                    {
                        GoingForward = true;
                    }
                }
            }
        }
    }
}