C# 对象构造函数 - 简写属性语法

标签 c# class object

几个月前,我读到了一项技术,如果您传入的参数与局部变量匹配,那么您可以使用一些简写语法来设置它们。为避免这种情况:

public string Method(p1, p2, p3)
{
    this.p1 = p1;
    this.p2 = p2;
    this.p3 = p3;
}

有什么想法吗?

最佳答案

您可能正在考虑 C# 3.0 中新的对象初始化语法。它看起来像这样:

var foo = new Foo { Bar = 1, Fizz = "hello" };

这给了我们一个新的 Foo 实例,“Bar”属性初始化为 1,“Fizz”属性初始化为“hello”。

此语法的诀窍在于,如果您省略“=”并提供标识符,它将假定您正在分配给同名的属性。因此,例如,如果我已经有一个 Foo 实例,我可以这样做:

var foo2 = new Foo { foo1.Bar, foo1.Fizz };

那么,这与您的示例非常接近。如果你的类有 p1、p2 和 p3 属性,并且你有同名的变量,你可以这样写:

var foo = new Foo { p1, p2, p3 };

请注意,这仅用于构造实例 - 而不是像您的示例所示那样将参数传递给方法 - 因此它可能不是您想要的。

关于C# 对象构造函数 - 简写属性语法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/506635/

相关文章:

c# - 在 Console.WriteLine 方法中格式化字符串

ruby-on-rails - 将类函数分解为模块是否可以提高 Rails 的性能?

class - Flutter Equatable Class 属性必须全部为 final

java - 使用对象调用方法时遇到问题

c# - 有没有一种方法可以在 azure 函数启动后立即调用通过依赖项注入(inject)注入(inject)的类中的方法?

c# - 我可以在没有管理员权限的情况下保存到哪个存储库?

C# Windows 窗体 FormClosing 事件

c++ - 设置私有(private)数据成员

ios - 如何检查 NSArray 中的空对象

javascript - 循环包含其他对象数组的对象数组。并进行一定的计算