简而言之,在 C# 中,我无法理解这部分
In C # in a nutshell, I can't understand this part
您可以将表达式传递给另一个构造函数,如下所示:
using System;
public class Wine{
public decimal Price;
public int Year;
public Wine(decimal price){Price = price;}
public Wine(decimal price, int year) : this(price) {Year = year;}
public Wine(decimal price, DateTime year) : this (price, year.Year) {}
}
在书中-“您调用它的任何方法都可能失败。但是,它可以调用静态方法。
我的问题是“为什么”?
语句 this(price)
调用了一个 重载的构造函数初始值设定项 。
考虑到这一点,我是这样阅读这句话的:
Any [instance] methods [belonging to the constructed class] that you call [in the constructor initializer] are likely to fail. [Constructor initializers] can, however, call static methods.
为什么会这样?
- 实例方法很可能会失败,因为它们依赖于对象的内部状态,但尚未构造对象。 (构造函数初始值设定项 运行 在 构造函数主体之前。)
- 静态方法没问题,因为它们没有对尚未构造的对象的引用。 (他们无权访问其内部状态 - 静态方法中没有
this
。)
您可以将表达式传递给另一个构造函数,如下所示:
using System;
public class Wine{
public decimal Price;
public int Year;
public Wine(decimal price){Price = price;}
public Wine(decimal price, int year) : this(price) {Year = year;}
public Wine(decimal price, DateTime year) : this (price, year.Year) {}
}
在书中-“您调用它的任何方法都可能失败。但是,它可以调用静态方法。
我的问题是“为什么”?
语句 this(price)
调用了一个 重载的构造函数初始值设定项 。
考虑到这一点,我是这样阅读这句话的:
Any [instance] methods [belonging to the constructed class] that you call [in the constructor initializer] are likely to fail. [Constructor initializers] can, however, call static methods.
为什么会这样?
- 实例方法很可能会失败,因为它们依赖于对象的内部状态,但尚未构造对象。 (构造函数初始值设定项 运行 在 构造函数主体之前。)
- 静态方法没问题,因为它们没有对尚未构造的对象的引用。 (他们无权访问其内部状态 - 静态方法中没有
this
。)