我查看了资料,定义属性有两种方式:  第一种:        public string LoginName
        {
            get;
            set;
        }  第二种:        private string loginName;        public string LoginName
        {
            get
            {
                return loginName;
            }
            set 
            {
                loginName = value;
            }
        }两种定义属性有什么差别?使用第二种定义属性的较广。
然后就是属性引用的问题啦。
    定义好属性类(如:登陆类(public class LoginType{})),在登陆时已经给他们赋值了,但是在要用的地方的时候调用他们是,总是要New登陆对象,把之前赋给登陆类的值全清空了,如何定义一个公共属性,既可以对值进行操作,又可以把值传给每个要用到该类的地方?我想了下,用静态方法固然可以做到,但是静态方法定义的属性,不可改变它的值。还请高手解惑,在此谢谢了!

解决方案 »

  1.   

    http://blog.joycode.com/ghj/archive/2007/06/05/103826.aspx
    自动属性
      

  2.   

    这个是C# 3.0的新特性
    自动属性,定义时必须同时有set get
    如果只有set或get则会报错
      

  3.   

    你可以将整个LoginType类放在session中
    用的时候直接从session里取
      

  4.   

    如果是传值的话,你给你的对象赋值以后传递给任意方法都可以直接取值,不需要NEW
      

  5.   


    和.net无关,编译器的特性。vs2008创建.net 2.0框架的程序一样可以用自动属性。但自动属性在2010之前无法初始化,需要构造函数里统一初始化,否则引用类型的将是null.不过这也不是什么坏事,风格也还好。
      

  6.   

    不是什么新属性,早在07年就看到过那样写。5楼的传递给另一方法,但是该方法没有这个类时,你是不是要new 一个?等于白说。4楼说的倒是还行,但是session有个时效性问题。
      

  7.   

    而且session是用在网页的,在cs下不知道能不能行,还没测试过
      

  8.   


    class Program
        {
            public string once
            {
                get;
                set;
            }
            static void Main(string[] args)
            {
            }
        }写了一段代码,在.net 2.0编译通过,说明不是3.0新特性,用IL disassembler打开
    .field private string '<once>k__BackingField'
    .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) 
    编译器自动给定义了一个field