Для нестатического поля, метода или свойства требуется ссылка на объект - 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();
}
}
}