同一指令中的类实例化和方法? [关闭]
Posted
技术标签:
【中文标题】同一指令中的类实例化和方法? [关闭]【英文标题】:Class instantation and method in same instruction? [closed] 【发布时间】:2021-07-28 12:38:46 【问题描述】:在 php 中,可以直接在新创建的类实例上调用方法。
(new MyClass())->classMethod();
在 C# 中可以做到这一点吗?
【问题讨论】:
是的,你试过了吗? 为什么?如果一个类只对一种方法有用,那么它就没有很好地利用实例状态,它可能应该是一个静态方法。 @Dai,如果您只需要一个结果(作为返回值或方法对您传入的引用类型之一的更改,例如作为构造函数参数或使用初始化程序),调用实例方法很有用。 @Sinatr "调用实例方法" 固有 没有用。我的抱怨是,如果一个实例是为了调用单个方法而构建的,那么这暗示了一个糟糕的对象类设计,因为同样可以通过static
方法没有必要的 GC 堆来完成由new
引起的分配。 (这种批评仅适用于您是所讨论类型的作者 - 如果您只是与其他人的图书馆相处,那么您有我的同情)。
@Dai,我现在不记得确切的方法,但它甚至对框架方法很有用。我想一些格式化程序。
【参考方案1】:
是的,可能,虽然我不确定你为什么需要这样做(不推荐)。
new MyClass().CallMethod();
【讨论】:
谢谢,对不起,实际上是我的用例导致了问题,我将调用作为另一个方法的参数并忘记在调用后返回实例,所以我认为问题出在链接。我现在觉得很愚蠢,但它发生了,为了我的辩护,我先用谷歌搜索了它,但可能没有使用正确的术语。以上是关于同一指令中的类实例化和方法? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章
在 MVC 中实例化和处置 DbContext 的最佳方法是啥?
用于本地实例化和作用域变量的 OCUnit 或 OCmock 测试方法。