我是一个初学者,通过一本书中的例子,有点难以理解。我正在阅读本书并编写代码以了解它的作用。我在结构的一部分,特别是结构变量。以下代码的错误为point does not take two arguments
。有人可以帮助我发现这里缺少/不正确的内容吗?感谢。
using System;
class Program
{
static void Main(string[] args)
{
// Create an initial Point.
Point myPoint;
Point p1 = new Point(10, 10);
myPoint.X = 349;
myPoint.Y = 76;
myPoint.Display();
// Adjust the X and Y values.
myPoint.Increment();
myPoint.Display();
Console.ReadLine();
}
// Assigning two intrinsic value types results in
// two independent variables on the stack.
static void ValueTypeAssignment()
{
Console.WriteLine("Assigning value types\n");
Point p1 = new Point(10, 10);
Point p2 = p1;
// Print both points.
p1.Display();
p2.Display();
// Change p1.X and print again. p2.X is not changed.
p1.X = 100;
Console.WriteLine("\n=> Changed p1.X\n");
p1.Display();
p2.Display();
}
}
struct Point
{
// Fields of the structure.
public int X;
public int Y;
// Add 1 to the (X, Y) position.
public void Increment()
{
X++; Y++;
}
// Subtract 1 from the (X, Y) position.
public void Decrement()
{
X--; Y--;
}
// Display the current position.
public void Display()
{
Console.WriteLine("X = {0}, Y = {1}", X, Y);
}
}
答案 0 :(得分:7)
您需要向Point
添加一个双参数构造函数,因为您使用参数(10, 10
调用它。)
struct Point
{
// Fields of the structure.
public int X;
public int Y;
public Point(int x, int y)
{
X = x;
Y = y;
}
或者,您可以使用内置的nullary(无参数)构造函数构造它,然后设置属性:
Point myPoint = new Point();
myPoint.X = 349;
myPoint.Y = 76;
简写就是:
Point myPoint = new Point { X = 349, Y = 76 };
甚至更短:
var myPoint = new Point { X = 349, Y = 76 };
最后,通常优良的做法是使结构不可变:一旦构造,就不可能修改它们的内容。这有助于避免语言中的许多其他陷阱。
答案 1 :(得分:4)
不是使用带有两个参数的构造函数构造一个点,而是将属性实例化为同一个调用的一部分。例如:
Point p = new Point { X = 1, Y = 2 };
您可以获得单线构造的优势,而无需编写其他代码。
答案 2 :(得分:0)
Point上没有带有两个参数的构造函数。
你需要:
public Point(int x, int y){ // assign these to your properties. }
答案 3 :(得分:0)
您缺少Point结构的构造函数:
public Point(int x, int y)
{
X = x;
Y = y;
}
答案 4 :(得分:0)
你不必初始化主要点吗?
Point myPoint = new Point();
答案 5 :(得分:0)
你没有定义了两个参数的构造函数。你的点结构应该像这样有效
public Point(int x, int y)
{
X = x;
Y = y;
}