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

Узнай цену своей работы

Формулировка задачи:

Выдает ошибку ""Ошибка 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"
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();
        }
    }
}

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

textual
Листинг программы
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();
        }
    }
}

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

10   голосов , оценка 3.8 из 5
Похожие ответы