Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/259.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#_.net 3.5 - Fatal编程技术网

C# 这两个代码部分相同吗?

C# 这两个代码部分相同吗?,c#,.net-3.5,C#,.net 3.5,片段: private double memberVal; public double MemberVal { get { return memberVal; } set { memberVal= value; } } 及 public double MemberVal { get; set; } 差不多。在第二个示例中,MemberVal不可公开访问。是的,除了第二个示例中MemberVal不可公开之外,该代码是等效的

片段:

 private double memberVal;   
 public double MemberVal   
 {   
  get { return memberVal; }   
  set { memberVal= value; }   
 }

public double MemberVal   
 {    
  get; set;  
 }

差不多。在第二个示例中,
MemberVal
不可公开访问。

是的,除了第二个示例中MemberVal不可公开之外,该代码是等效的(您的意思是说)。在后一种情况下,编译器会为您生成一个字段。它将有另一个自动生成的名称。

否,但现在它们是相同的

private double memberVal;
public double MemberVal
{
    get { return memberVal; }
    set { memberVal= value; }
} 

更新 除了——正如Johannes Rössel所指出的——在第一种情况下,您可以从代码访问字段,但在后一种情况下,您不能:-)访问字段

这意味着在第一个代码示例中,您可以在类中直接为属性设置支持成员(即
private double memberVal1
例如
memberVal=1.1;
),其中在第二个示例中,属性仍然有一个私有支持成员,但它现在不可见。
您只能通过属性访问它

private double memberVal;
public double MemberVal
{
    get { return memberVal; }
    set { memberVal= value; }
} 

public double MemberVal
{
    get; set;
}
第二个代码片段不应该在.NET2.0上工作,因为它是在.NET3.0中引入的


第二个是第一个的简写符号,但仅适用于.net 3.0或更高版本。

除了第一种情况下可以通过代码访问字段,但在后一种情况下不能:-)除了第二个示例中无法访问的自动生成的私有成员。出现错误。MemberVal是公开的。@Johannes Rössel:是的,这很值得一提,已经更新为包含相同的:)这是错误的。MemberVal是公共的。@Samvel-根据您的编辑,它们现在是相同的。第一个代码段将比第二个代码段多使用一个变量,但行为相同。“第一个代码段将比第二个代码段多使用一个变量”。什。该类仍然有属性的私有存储成员,它是自动生成的,不可见,但可以通过refelection和/或在IL中看到。
private double memberVal;
public double MemberVal
{
    get { return memberVal; }
    set { memberVal= value; }
} 

public double MemberVal
{
    get; set;
}