Форум программистов, компьютерный форум, киберфорум
Наши страницы
C# для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
unsektor
112 / 55 / 13
Регистрация: 26.12.2010
Сообщений: 205
1

Ошибка при присвоении переменной класса

26.12.2010, 15:12. Просмотров 938. Ответов 9
Метки нет (Все метки)

Доброго времени суток, уважаемые программисты.
Такая ситуация: имеется два класса

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
 
namespace WindowsFormsApplication1
{
    class Example1
    {
        public string Path = "";
    }
    class Example2
    {
        Example1 Example1clone = new Example1();
        Example2 Example2clone = new Example2();
 
        // 
        public string WP = Example1clone.Path;
    }
}
при попытке присвоения значения переменной Example2.WP происходит ошибка:
Ошибка 1 Инициализатор поля не может обращаться к нестатическому полю, методу или свойству "WindowsFormsApplication1.Example2.Example1clone" C:\Users\...\Documents\Visual Studio 2010\Projects\...\WindowsFormsApplication1\Class2.cs 19 28 WindowsFormsApplication1
И никак не получается работать с классами.
На php я бы реализовал так (возможно, расширит понятие проблемы)
PHP
1
2
3
4
5
6
7
8
9
10
<?php
    class Example1
        {
            public (string) $Path;
        }
    class Example2
        {
            public (string) $WP = Example1::$Path;
        }
?>
ОС: Windows 7
ПО: Visual Studio 2010
Теперь собственно вопрос, в чем проблема и как её можно решить?
PS: Я недавно начал практиковаться на c# для разработки приложений, однако не могу найти решение проблемы ...
Заранее спасибо за ответ.
0
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.12.2010, 15:12
Ответы с готовыми решениями:

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

CS0029 при присвоении переменной адреса метода
Добрый день! Делегат вызывается в неймспейс. Переменная создается в классе 2. Переменной...

Значения полей класса при присвоении
public class abc { public int a; int b; public int B { set{ ...

ошибка в присвоении?
Начал писать программу для расчета равноускоренного движения с выводом на графике перемещения...

Получить доступ из класса к переменной при наследовании
using System; class a { public int x = 90; } class b : a { public int x = 110; ...

9
Extsm
73 / 73 / 10
Регистрация: 15.04.2009
Сообщений: 126
26.12.2010, 15:21 2
Цитата Сообщение от unsektor Посмотреть сообщение
Доброго времени суток, уважаемые программисты.
Такая ситуация: имеется два класса

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
 
namespace WindowsFormsApplication1
{
    class Example1
    {
        public string Path = "";
    }
    class Example2
    {
        Example1 Example1clone = new Example1();
        Example2 Example2clone = new Example2();
 
        // 
        public string WP = Example1clone.Path;
    }
}
Зачем тебе
C#
1
Example2 Example2clone = new Example2();
?
0
unsektor
112 / 55 / 13
Регистрация: 26.12.2010
Сообщений: 205
26.12.2010, 15:24  [ТС] 3
Цитата Сообщение от Extsm Посмотреть сообщение
Зачем тебе
C#
1
Example2 Example2clone = new Example2();
?
Клонирую класс
0
Extsm
73 / 73 / 10
Регистрация: 15.04.2009
Сообщений: 126
26.12.2010, 15:54 4
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
class Example1
    {
        public string Path;
 
        public Example1(string path)
        {
            this.Path = path;
        }
    }
    class Example2
    {
        Example1 Example1clone = new Example1("");
        public string WP;
        
        public void Set()
        {
            WP = Example1clone.Path;
        }
    }
Но у тебя жесткий хардкод)) Я бы получше сделал.
0
26.12.2010, 15:54
romedal
55 / 55 / 9
Регистрация: 18.03.2010
Сообщений: 345
Записей в блоге: 1
26.12.2010, 17:05 5
Конструкторы по умолчанию в класы не помешало бы добавить
0
Extsm
73 / 73 / 10
Регистрация: 15.04.2009
Сообщений: 126
26.12.2010, 17:21 6
Цитата Сообщение от romedal Посмотреть сообщение
Конструкторы по умолчанию в класы не помешало бы добавить
Это С#, здесь не обязательно создавать их. Ну и я же писал, что это хардкод, я могу написал получше, но для его уровня этого пока хватит.
0
unsektor
112 / 55 / 13
Регистрация: 26.12.2010
Сообщений: 205
26.12.2010, 17:45  [ТС] 7
Я не могу вызвать член первого класса из второго, мне не нужно других методов реализаций.Достаточно объяснить, какой тип защиты использовать для данного члена класса.
но для его уровня этого пока хватит.
Вы, наверное, тесно знакомы с моим уровнем, раз так говорите.
0
Extsm
73 / 73 / 10
Регистрация: 15.04.2009
Сообщений: 126
26.12.2010, 18:15 8
Цитата Сообщение от unsektor Посмотреть сообщение
Вы, наверное, тесно знакомы с моим уровнем, раз так говорите.
Извините, но вы начали создавать поля класса public...Это уже бред=)
public поля только в отдельных случаях используются.

Добавлено через 3 минуты
Цитата Сообщение от unsektor Посмотреть сообщение
Я не могу вызвать член первого класса из второго, мне не нужно других методов реализаций.Достаточно объяснить, какой тип защиты использовать для данного члена класса.
Хочете через Example2 вызвать Example1 Example1clone?
0
unsektor
112 / 55 / 13
Регистрация: 26.12.2010
Сообщений: 205
27.12.2010, 10:44  [ТС] 9
Решил проблему следующим образом:

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
 
namespace WindowsFormsApplication1
{
    class Example1
    {
        public static string Path = "";
    }
    class Example2
    {
        public static string WP = Example1.Path;
    }
}
0
Mikant
1292 / 965 / 127
Регистрация: 08.12.2009
Сообщений: 1,299
27.12.2010, 16:18 10
просто МОЛОДЕЦ!
2
27.12.2010, 16:18
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.12.2010, 16:18

Определение возвращаемой переменной при создании класса
Всем здравствуйте и большой привет с Украины :) Прошу помощи с таким вопросом: Имеется класс, в...

Ошибка IndexOutOfRangeException в присвоении значения массиву
Привет, разбираюсь с сигналами в C#.Выходит ошибка: Необработанное исключение типа...

Создание экземпляра класса-наследника для переменной с типом базового класса
Подскажите чайнику как создается экземпляр класса BC BaseClass BC = new DerivedClass(); ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.