Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/318.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 跳过模型类上的字段_C#_Automatic Properties - Fatal编程技术网

C# 跳过模型类上的字段

C# 跳过模型类上的字段,c#,automatic-properties,C#,Automatic Properties,最近,在阅读了大量有关Internet的教程后,我注意到一些开发人员跳过了在模型类中编写字段,而只使用属性,如下所示: public class MyClass { public string MyProperty { get; private set; } } 除了编写更少的代码之外,这样做的好处是什么?虽然我确实意识到setter是私有的,但如果不指定私有字段,是否存在某种安全问题?换句话说:这里的最佳实践是什么?编写没有字段和相关属性的模型类,还是只使用这些没有字段的公共属性 提

最近,在阅读了大量有关Internet的教程后,我注意到一些开发人员跳过了在模型类中编写字段,而只使用属性,如下所示:

public class MyClass
{
    public string MyProperty { get; private set; }
}
除了编写更少的代码之外,这样做的好处是什么?虽然我确实意识到setter是私有的,但如果不指定私有字段,是否存在某种安全问题?换句话说:这里的最佳实践是什么?编写没有字段和相关属性的模型类,还是只使用这些没有字段的公共属性

提前感谢,

Bo

在c#3.0及更高版本中,编译器将为您将局部变量放入MSIL中。它使代码更易于阅读和维护(需要跟踪的变量更少,等等)

应该没有安全问题,因为它在内部创建的是本地范围的成员变量

有关更多信息,请参见。

在c#3.0及更高版本中,编译器将为您将局部变量放入MSIL中。它使代码更易于阅读和维护(需要跟踪的变量更少,等等)

应该没有安全问题,因为它在内部创建的是本地范围的成员变量


有关更多信息,请参阅。

如果您没有对变量执行任何操作,只需设置并读取它们,那么为什么要添加额外的代码来创建私有变量并执行完整的setter和getter呢

C#将创建私有变量,因此字节码仍然正确,但对于在那里阅读程序的任何人来说,更容易理解发生了什么

任何时候你都可以让代码更容易阅读,即使编译器中有语法糖,这也是一个胜利

但是,如果您必须执行任何操作,例如检查属性是否在某个范围内,那么在C#3中,您仍然需要自己写出所有其他内容


最好的做法是按照问题中的方式编写。

如果没有对变量执行任何操作,只需设置并读取变量,那么为什么要添加额外的代码来创建私有变量并执行完整的setter和getter呢

C#将创建私有变量,因此字节码仍然正确,但对于在那里阅读程序的任何人来说,更容易理解发生了什么

任何时候你都可以让代码更容易阅读,即使编译器中有语法糖,这也是一个胜利

但是,如果您必须执行任何操作,例如检查属性是否在某个范围内,那么在C#3中,您仍然需要自己写出所有其他内容


最好的做法是按照问题中的内容来写。

很好,非常感谢Bob。MS Doc链接正是我想要的:)目前正在编写一份报告/评论,我需要源代码来记录此内容。非常感谢Bob。微软文档链接正是我想要的:)目前正在写一份报告/评论,我需要来源来记录这一点。