stud3x 发表于 2015-7-29 13:32:44

关于自动属性生成的私有字段


using System;

namespace ConsoleAMplication1
{   
   class AccessInstanceMember      
    {      
      private string d = "dValue";
               
      public string E { get; set; }   //自动属性
      public void eChange(AccessInstanceMember other)
      {
            Console.WriteLine("d={0}", other.d); //此句证明可以访问other的私有字段
            other.E = "_eValue"; //调用自动属性,创建私有字段 _e
            Console.WriteLine("_e={0}", other.E); //用自动属性可以访问 _e 的值
Console.WriteLine("_e={0}", other._e);//报错“不包含_e”?            
      }
    }
       
          class Program   
    {   static void Main(string[] args)
      {
            AccessInstanceMember AIMTemp1 = new AccessInstanceMember();
                        AccessInstanceMember AIMTemp2 = new AccessInstanceMember();
            AIMTemp2.eChange(AIMTemp1);

            Console.ReadLine();
      }
        }
}

如上代码,
12行证明在方法eChange里可以访问对象other的私有字段,
13行通过自动属性为自动生成的私有字段_e赋值,
14行通过自动属性读取_e的值成功,
15行以12行的方式读取_e的值报错:“不包含_e”,为什么?是自动生成的私有字段名不是 _e 还是其它原因?

ibcadmin 发表于 2015-7-31 09:04:26

..命名空间对不对

stud3x 发表于 2015-8-4 10:45:05

类的声明和调用都在同一命名空间下,命名空间应该没问题。
谢谢回复,虽然问题没搞透,但对自动属性及其自动生成的匿名字段已经搞清楚了。
页: [1]
查看完整版本: 关于自动属性生成的私有字段