C# 实例化一个对象并在一行中调用一个方法?
我有很多这样的代码C# 实例化一个对象并在一行中调用一个方法?,c#,C#,我有很多这样的代码 var o = new SomeClass().DoSomething(someParam); 这是一个设计缺陷吗 此类是某种生成器类。它应该构造其他对象。在样式方面没有问题。 如果在调用DoSomething方法后需要构造SomeClass,这将是一个问题。不,这很好-尤其是在用作构建器的类型中,您可能会经常看到它。例如: string x = new StringBuilder().Append("Foo")
var o = new SomeClass().DoSomething(someParam);
这是一个设计缺陷吗
此类是某种生成器类。它应该构造其他对象。在样式方面没有问题。
如果在调用DoSomething方法后需要构造SomeClass,这将是一个问题。不,这很好-尤其是在用作构建器的类型中,您可能会经常看到它。例如:
string x = new StringBuilder().Append("Foo")
.AppendFormat("{0}:{1}", x, y)
.ToString();
或在我的协议缓冲区端口中:
Person p = new Person.Builder { Name = "Jon", Age = 35 }.Build();
这里的
Person
类型是不可变的,但是builder类型是不可变的-因此您可以创建一个builder,设置一些属性,然后调用Build
这不是有缺陷的设计。我想说的是,唯一的问题是可读性,如果您团队的其他成员没有使用这种样式,那么就不要使用它,尤其是在var中,因为它会使您更难理解返回的内容。对我来说,我个人喜欢它,因为我习惯于从jquery链接。如果调用方法后不需要实例,那么最好在SomeClass
上使用静态方法,并最终得到
var o = SomeClass.DoSomething(someParam);
如果出于任何原因,您绝对需要一个新实例来执行DoSomething
,那么您可以创建一个静态工厂方法,使代码更具可读性,如:
var o = SomeClass.GetInstance().DoSomething(someParam)