使用 .NET magic get set 是最佳实践吗?

发布于 2024-12-05 10:43:03 字数 149 浏览 0 评论 0原文

可以在代码中使用它(在 mvc 3 上下文或任何其他上下文中):

protected String test { get; set; }

如果您有任何这些答案,我想听听为什么它是和为什么不是。

谢谢。

It is okay to use this in code (in the mvc 3 context or any other context) :

protected String test { get; set; }

Would like to hear why it is and why it is not if you have any of those answers.

Thanks.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

埋葬我深情 2024-12-12 10:43:03

这只是一种方便。

它所做的只是为您删除样板代码,因为它实际上相当于

private String _test;
protected String test{
 get{
  return _test;
 }
 set{
  _test = value;
 }
}

所以,当这就是全部时,请使用 magic get set。
当您需要做一些更时髦的事情时,请实现 getetters。

例如,在 MVC 中,我经常想对我的属性使用 Enum,但 CodeFirst 不支持它。所以,我这样做:

[Column("Type")]
public byte DBType;
public MyCustomEnum Type{
 get{
  return (MyCustomEnum)DBType;
 }
 set{
  DBType = (byte)value;
 }
}

这会按预期填充我的数据库。

It is simply a convenience.

All it does is remove boiler plate code for you, since it really is equivalent to

private String _test;
protected String test{
 get{
  return _test;
 }
 set{
  _test = value;
 }
}

So, when that's all it is, use magic get set.
When you need to do something more funky, then implement the getsetters.

For example, in MVC, I often want to use Enums for my properties, but it is not supported by CodeFirst. So, I do this:

[Column("Type")]
public byte DBType;
public MyCustomEnum Type{
 get{
  return (MyCustomEnum)DBType;
 }
 set{
  DBType = (byte)value;
 }
}

And this populates my database as expected.

A君 2024-12-12 10:43:03

完全没问题。它与使用手动支持的完整属性是一样的,只是它的支持是由编译器自动生成的。如果您需要更好地控制 get-set 的实现,请务必使用详细语法,但如果您只需要简单的属性(例如 MVC 中的 VM 属性),请使用此语法,因为它使代码更具可读性开门见山。

It is completely okay. It is the same thing as using a full property with manual backing, just that its backing is auto-generated by the compiler. If you need greater control over the implementation of get-set, use the verbose syntax by all means, but if you just need simple properties (for VM properties in MVC for example) use this syntax, as it makes the code much more readable and direct to the point.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文