为什么不能使用 C# 对象初始值设定项语法调用方法? [关闭]

2024-05-04

为什么不能使用 C# 对象初始值设定项语法调用方法?

在我看来,属性设置器是按照它们在语法中设置的顺序调用的,那么为什么不允许调用方法呢?如果有充分的理由,我会错过它。

EDIT

我意识到方法和属性之间的语义差异以及技术相似性。这个问题的目的是探究他们不包含该功能的良好技术原因。

这。 __curious_geek,我听到你在说什么,但我确信他们没有包含一些功能,因为它在技术上不可行。

这就是我所追求的。压倒性的不受欢迎的语气响亮而清晰地传来。 Stackoverflow 不再是一个“问答网站”,而是一个“捍卫你的问题网站”。

Edit 2

使用示例:

var mySuperLongVariableNameThatIDontWantToTypeOverAndOverAgainAndIsntThatTheWholePointAnyway  = new Thingy
    {
        Name = "Marty McFly",
        AddChildren("Biff","Big Bird","Alf"),
        // 1000 other properties and method calls.....
    }

答案就在名字里——对象初始化器语法是对对象初始状态进行可视化分组的语法糖。方法会改变对象的状态,所以一旦改变,它就不再是对象的状态了。initial state.

例如:假设你买了一辆车。这是一辆红色轿跑车,行驶里程为 55,000 英里。然后,您决定驾驶它。最终行驶了 55,500 英里。它从初始状态发生了变化:

var c = new Car() {Color = "Red",
                   Style = Styles.Coupe,
                   Mileage = 55000};
// c.Mileage is 55,000
c.Drive();
// c.Mileage is 55,500

在这个有点人为的例子中,该方法有一个副作用从而将对象从最初的 55,000mi 状态更改为 55,500mi 状态。这与购买一辆行驶里程为 55,500 英里的汽车不同。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么不能使用 C# 对象初始值设定项语法调用方法? [关闭] 的相关文章

随机推荐