Свойство, доступное только для записи - C#
Формулировка задачи:
Проверьте, пожалуйста, код.
Проблема:
требуется написать свойство, позволяющее умножить координаты точки на скаляр, доступное только для записи. class Point: строки с 67 по 80. В Program вместо новых координат (полученных в методе Move), подставляются старые координаты точки (1,2), причем при расчетеy
value удваивается (координата умножается на 6). Строки 26 - 28.using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Practice_Classes
{
class Point
{
int x;
int y;
public Point() //конструктор для нулевых координат
{
x = 0;
y = 0;
}
public Point(int x, int y) //конструктор для заданных координат
{
this.x = x;
this.y = y;
}
public void Print() // вывести координаты точек на экран;
{
Console.WriteLine("Координаты точки: х = {0}, y = {1}", x, y);
}
public double Length(int x, int y) // рассчитать расстояние от начала координат до точки;
{
return Math.Sqrt(x * x + y * y);
}
public static void Move(int x, int y) // переместить точку на плоскости на вектор(a, b) , int a, int b
{
Console.WriteLine("Перемещение точки на плоскости на вектор(a, b). Введите а:");
int a = int.Parse(Console.ReadLine());
Console.WriteLine("Введите b:");
int b = int.Parse(Console.ReadLine());
x = x + a;
y = y + b;
Console.WriteLine("Координаты точки: х = {0}, y = {1}", x, y);
}
public int X //свойство для обращения к полю x
{
get
{
return x;
}
set
{
x = value;
}
}
public int Y //свойство для обращения к полю y
{
get
{
return y;
}
set
{
y = value;
}
}
//Свойство, позволяющее умножить координаты точки на скаляр (доступное только для записи)
public int Sx //свойство только для записи
{
set
{
x = x * value;
}
}
public int Sy //свойство только для записи
{
set
{
y = y * value;
}
}
}
}using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Practice_Classes
{
class Program
{
static void Main(string[] args)
{
Point p1 = new Point();
p1.Print();
Point p2 = new Point(1,2);
p2.Print();
double z = p2.Length(p2.X,p2.Y); //вызов метода Length
Console.WriteLine("Расстояние между точками (0,0) и ({0},{1}) = {2:f2}", p2.X, p2.Y, z);
Point.Move(p2.X,p2.Y);
// Дальше что-то не так... Вместо новых координат (полученных в методе Move), подставляются старые координаты точки (1,2).
p2.Sx = p2.X * 3;
p2.Sy = p2.Y * 3; // Вместо 3 подставляется 6!
Console.WriteLine("Координаты точки: х = {0}, y = {1}", p2.X, p2.Y);
Console.ReadKey();
}
}
}Решение задачи: «Свойство, доступное только для записи»
textual
Листинг программы
set
{
x = x * value;
}