Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Передать свойство в параметр 
:(
    Опции темы
Rohoss
Дата 6.1.2009, 23:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Начальник интернета
***


Профиль
Группа: Завсегдатай
Сообщений: 1308
Регистрация: 9.10.2006
Где: Matrix

Репутация: нет
Всего: 18



Почему не могу поменять свойство? В Delphi ведь сменить таким способом можно, но почему в C# не работает? И какой есть аналог?

Код

namespace WindowsApplication3
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {

        }

        private void button1_Click(object sender, EventArgs e)
        {
            MyClass.Change(checkBox1.Checked);
        }
    }

    public class MyClass
    {
        public static void Change(bool b)
        {
            if (b) {b = false;}
            else {b = true;};
        }
    }
}


Добавлено через 8 минут и 34 секунды
Туда то оно попадает, но изменить не получается…
Код

namespace WindowsApplication3
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {

        }

        private void button1_Click(object sender, EventArgs e)
        {
            MyClass.Change(textBox1.Text);
        }
    }

    public class MyClass
    {
        public static void Change(string s)
        {
            if (s == "") { s = "false"; MessageBox.Show("false"); }
            else {s = "true";};
        }
    }
}



--------------------
Файловый менеджер Explorer.Net скачать  video
PM ICQ   Вверх
Partizan
Дата 6.1.2009, 23:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Let's do some .NET
****


Профиль
Группа: Модератор
Сообщений: 2828
Регистрация: 19.12.2005
Где: Санкт-Петербург

Репутация: 8
Всего: 67



Rohoss, 

Код

namespace WindowsApplication3
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        private void Form1_Load(object sender, EventArgs e)
        {
        }
        private void button1_Click(object sender, EventArgs e)
        {
            MyClass.Change(ref checkBox1.Checked);
        }
    }
    public class MyClass
    {
        public static void Change(ref bool b)
        {
            if (b) {b = false;}
            else {b = true;};
        }
    }
}



--------------------
СУВ,
       Partizan.
PM MAIL WWW ICQ Skype GTalk Jabber   Вверх
Rififi
Дата 6.1.2009, 23:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1254
Регистрация: 9.3.2008

Репутация: нет
Всего: 36



чтобы функция могла изменять переданные параметр, его нужно передавать по ссылке (ключевое слово ref)
подробности: www.google.ru => "C# value reference"
PM MAIL   Вверх
Rohoss
Дата 7.1.2009, 00:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Начальник интернета
***


Профиль
Группа: Завсегдатай
Сообщений: 1308
Регистрация: 9.10.2006
Где: Matrix

Репутация: нет
Всего: 18



Я конечно же так пробовал…
Код

Error    1    A property or indexer may not be passed as an out or ref parameter    C:\Documents and Settings\admin\Мои документы\Visual Studio 2005\Projects\WindowsApplication3\WindowsApplication3\Form1.cs    25    32    WindowsApplication3



--------------------
Файловый менеджер Explorer.Net скачать  video
PM ICQ   Вверх
Partizan
Дата 7.1.2009, 00:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Let's do some .NET
****


Профиль
Группа: Модератор
Сообщений: 2828
Регистрация: 19.12.2005
Где: Санкт-Петербург

Репутация: 8
Всего: 67



Rohoss, да...со свойством промашка вышла..
 
а вообще почему бы не сделать так:

Код

namespace WindowsApplication3
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        private void Form1_Load(object sender, EventArgs e)
        {
        }
        private void button1_Click(object sender, EventArgs e)
        {
           checkBox1.Checked = MyClass.Change(checkBox1.Checked);
        }
    }
    public class MyClass
    {
        public static bool Change(bool b)
        {
            if (b) {return false;}
            else {return true;};
        }
    }
}



--------------------
СУВ,
       Partizan.
PM MAIL WWW ICQ Skype GTalk Jabber   Вверх
Rohoss
Дата 7.1.2009, 00:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Начальник интернета
***


Профиль
Группа: Завсегдатай
Сообщений: 1308
Регистрация: 9.10.2006
Где: Matrix

Репутация: нет
Всего: 18



Partizan, да, так работает, можно и ещё временные переменные завести, но была ситуация, когда мне нужно было передать 14 свойств. Вот я подумал, нет ли варианта…



--------------------
Файловый менеджер Explorer.Net скачать  video
PM ICQ   Вверх
Partizan
Дата 7.1.2009, 00:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Let's do some .NET
****


Профиль
Группа: Модератор
Сообщений: 2828
Регистрация: 19.12.2005
Где: Санкт-Петербург

Репутация: 8
Всего: 67



Rohoss, ну вообще конечно есть методы именно таки свойство передавать в виде PropertyDescriptor...но оно того не стоит =)


--------------------
СУВ,
       Partizan.
PM MAIL WWW ICQ Skype GTalk Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
Partizan
PashaPash

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, Partizan, PashaPash.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | .NET для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0507 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.