Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/22: Рейтинг темы: голосов - 22, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 11.12.2013
Сообщений: 26
1

Для нестатического поля, метода или свойства требуется ссылка на объект

12.01.2015, 22:22. Показов 4072. Ответов 8
Метки нет (Все метки)

Выдает ошибку ""Ошибка 1 Для нестатического поля, метода или свойства "Manager_Account.CalcMatrix.Calc(int, int)" требуется ссылка на объект c:\users\user-pc\documents\visual studio 2013\Projects\Manager Account\Manager Account\Program.cs 68 51 Manager Account"

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Threading;
 
namespace Manager_Account
{
 
    public class CalcMatrix
    {
        public CalcMatrix() { }
        public void AmountAll(int[,] matrix, int rowCount, int columnCount)
        {
            var sum = 0;
            for (var i = 0; i < rowCount; i++)
                for (var j = 0; j < columnCount; j++)
                    sum += matrix[i, j];
 
            Console.WriteLine("Сумма всех элементов равна = " + sum);
        }
        public int[,] InputMatrix(int rowCount, int columnCount)
        {
            var r = new Random();
         
            var matrix = new int[rowCount, columnCount];
 
            Console.WriteLine("\nМатрица:");
            for (var i = 0; i < rowCount; i++)
            {
                for (var j = 0; j < columnCount; j++)
                {
                    matrix[i, j] = r.Next(1, 9);
                    Console.Write(matrix[i, j] + " ");
                }
                Console.WriteLine();
            }
            return matrix;
        }
        public void AmountMainDioganal(int[,] matrix, int rowCount)
        {
            var sum = 0;
 
            for (var i = 0; i < rowCount; i++)
                sum += matrix[i, i];
 
            Console.WriteLine("Сумма всех элементов главной диоганали равна = " + sum);
        }
        public void Calc(int n, int m)
        {
            
            var matrix = InputMatrix(n, m);
            AmountAll(matrix, n, m);
            AmountMainDioganal(matrix, n);
        }
 
    }
    class Program
    {
        static void Main()
        {
            Console.WriteLine("Введите количество строк:");
            var n = Convert.ToInt32(Console.ReadLine());
            Console.WriteLine("Введите количество столбцов:");
            var m = Convert.ToInt32(Console.ReadLine());
            var calcMatrix = new CalcMatrix();
            Thread t = new Thread(new ThreadStart(CalcMatrix.Calc(n, m)));
            t.Start();
 
            Console.ReadKey();
        }
    }
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
12.01.2015, 22:22
Ответы с готовыми решениями:

Для нестатического поля, метода или свойства требуется ссылка на объект
Имеется 2 формы, необходимо, чтобы при нажатии на кнопку на Форме№2 совершилось действие на Форме№1...

Для нестатического поля, метода или свойства требуется ссылка на объект
Для нестатического поля, метода или свойства требуется ссылка на объект static void Main(string...

Для нестатического поля, метода или свойства требуется ссылка на объект
Замучился уже. Кто может помочь? Есть 2 datagrid заполняемых динамически (по регистрации карточек в...

Для нестатического поля, метода или свойства требуется ссылка на объект
Здравствуйте, не могу решить проблемы в программе. Почти дописал парсер математических выражений...

8
121 / 121 / 72
Регистрация: 11.05.2014
Сообщений: 331
12.01.2015, 22:41 2
Цитата Сообщение от Ice Frog Посмотреть сообщение
CalcMatrix.Calc(n, m))
Попытка вызова экземплярного метода Calc(int n, int m) как статического.

Цитата Сообщение от Ice Frog Посмотреть сообщение
new ThreadStart(CalcMatrix.Calc(n, m))
Делегат ThreadStart может указывать только на методы не имеющие параметров, и не возвращающие значение.
0
1728 / 1052 / 388
Регистрация: 13.06.2013
Сообщений: 3,590
12.01.2015, 22:46 3
68 строчка. Напишете calcMatrix с маленькой, вам же нужно к объекту обращаться, а не к классу
0
0 / 0 / 0
Регистрация: 11.12.2013
Сообщений: 26
12.01.2015, 23:00  [ТС] 4
Ошибка 1 Ожидается имя метода 68 51 Manager Account
0
70 / 61 / 33
Регистрация: 03.09.2013
Сообщений: 306
12.01.2015, 23:21 5
Вот тут ошибка
C#
1
2
 var calcMatrix = new CalcMatrix();
            Thread t = new Thread(new ThreadStart(CalcMatrix.Calc(n, m)));
Используйте явные переменные тогда понятнее будет.
C#
1
2
CalcMatrix calcMatrix = new CalcMatrix(); // 
            Thread t = new Thread(new ThreadStart(calcMatrix.Calc(n, m)));
0
0 / 0 / 0
Регистрация: 11.12.2013
Сообщений: 26
12.01.2015, 23:44  [ТС] 6
Driwars, Я знаю,что там ошибка все перепробовал вообще не фига(
0
2141 / 1278 / 516
Регистрация: 04.03.2014
Сообщений: 4,092
13.01.2015, 00:18 7
Ice Frog,
C#
1
2
3
4
5
6
7
8
9
10
11
12
        static void Main()
        {
            Console.WriteLine("Введите количество строк:");
            var n = Convert.ToInt32(Console.ReadLine());
            Console.WriteLine("Введите количество столбцов:");
            var m = Convert.ToInt32(Console.ReadLine());
            var calcMatrix = new CalcMatrix();
            Thread t = new Thread(() => calcMatrix.Calc(n, m));
            t.Start();
 
            Console.ReadKey();
        }
Добавлено через 55 секунд
через лямбда выражение
0
0 / 0 / 0
Регистрация: 11.12.2013
Сообщений: 26
13.01.2015, 00:23  [ТС] 8
Metall_Version, Спасибо разобрались) Вот что получилось
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Threading;
 
namespace Manager_Account
{
 
    public class CalcMatrix
    {
        public class CalcArgs
        {
            public int M { get; set; }
            public int N { get; set; }
            public CalcArgs(int m, int n)
            {
                M = m;
                N = n;
            }
        }
        public CalcMatrix() { }
        public void AmountAll(int[,] matrix, int rowCount, int columnCount)
        {
            var sum = 0;
            for (var i = 0; i < rowCount; i++)
                for (var j = 0; j < columnCount; j++)
                    sum += matrix[i, j];
 
            Console.WriteLine("Сумма всех элементов равна = " + sum);
        }
        public int[,] InputMatrix(int rowCount, int columnCount)
        {
            var r = new Random();
 
            var matrix = new int[rowCount, columnCount];
 
            Console.WriteLine("\nМатрица:");
            for (var i = 0; i < rowCount; i++)
            {
                for (var j = 0; j < columnCount; j++)
                {
                    matrix[i, j] = r.Next(1, 9);
                    Console.Write(matrix[i, j] + " ");
                }
                Console.WriteLine();
            }
            return matrix;
        }
        public void AmountMainDioganal(int[,] matrix, int rowCount)
        {
            var sum = 0;
 
            for (var i = 0; i < rowCount; i++)
                sum += matrix[i, i];
 
            Console.WriteLine("Сумма всех элементов главной диоганали равна = " + sum);
        }
        public void Calc(object calcAgrs)
        {
            CalcArgs args = calcAgrs as CalcArgs;
            if (args == null)
                throw new ArgumentNullException();
 
            var matrix = InputMatrix(args.N, args.M);
            AmountAll(matrix, args.N, args.M);
            AmountMainDioganal(matrix, args.N);
        }
 
    }
    class Program
    {
        static void Main()
        {
            Console.WriteLine("Введите количество строк:");
            var n = Convert.ToInt32(Console.ReadLine());
            Console.WriteLine("Введите количество столбцов:");
            var m = Convert.ToInt32(Console.ReadLine());
            var calcMatrix = new CalcMatrix();
            Thread t = new Thread(new ParameterizedThreadStart(calcMatrix.Calc));
            t.Start(new CalcMatrix.CalcArgs(m, n));
 
            Console.ReadKey();
        }
    }
}
0
2141 / 1278 / 516
Регистрация: 04.03.2014
Сообщений: 4,092
13.01.2015, 00:29 9
Ice Frog, вложенные классы не есть гуд, лучше отдельно вынести
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
13.01.2015, 00:29

Заказываю контрольные, курсовые, дипломные работы и диссертации здесь.

Для нестатического поля, метода или свойства требуется ссылка на объект
Мне нужно передать массив в функцию, при передаче возникает ошибка( в мейне), в это же время при...

Для нестатического поля, метода или свойства требуется ссылка на объект
Задание: Разработать метод f(x), который возвращает вторую справа цифру натурального числа x....

Для нестатического поля, метода или свойства требуется ссылка на объект
public static void EndClient(Client client) { try { ...

Для нестатического поля, метода или свойства требуется ссылка на объект
Всем доброго времени суток. Подскажите, пожалуйста, как исправить ошибку? Пробовал выносить методы...


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

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

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