class AAA{
double a=0;
string s2="";
}我想问一下有没有办法实现下面的效果:
AAA aaa=new AAA(){s2="abc"};然后aaa=333;
实际上意义是aaa.a=333;

解决方案 »

  1.   

    另外,提醒楼上的, aaa=333; 这个是类型转换,不是赋值语法
      

  2.   

    可以
    class AAA{
    public double a{get;set;};
    public string s2{get;set;};
    public AAA(){
    a=0;
    s2="";
    }
    }
    AAA aaa = new AAA(){s2="abc",a=78}
      

  3.   

    转换你个脑袋啊,为什么不把你的脑袋转换了。
    不懂别出来胡扯好不好。
    aaa=333,典型的C#赋值语句,任何C#基础教材的第一章一定有讲这个东西。AAA aaa=new AAA(){s2="abc"}; 
    //假设此时的aaa是一个对象a1,
    aaa=333;
    //此时的aaa就是另一个对象a2了。
      

  4.   

    =号确实不支持重载,可类型转化是支持重载的。你重载下类型转换看看,这个到底是赋值还是类型转换
        public class CAaa
        {
            public int intParm = 0;
            public static implicit operator CAaa(int value)
            {
                CAaa r = new CAaa();
                r.intParm = value;
                return r;
            }
        }    [TestClass]
        public class UnitTest1
        {
            [TestMethod]
            public void TestMethod1()
            {
                CAaa aaa = new CAaa();
                aaa=999;
                Console.WriteLine(aaa.intParm);
            }
        }
      

  5.   

    你要是分不清类型转换和赋值是两个事情的话就麻烦你闭嘴吧,好吗?aaa=999;这条语句分两步操作,第一步把999转换成CAaa类型,然后把转换生成的对象赋值给aaa。我上面说的很清楚了,aaa这个对象已经变了,不是原来的实例了。
    就拿楼主的例子来说,假如存在一个int到aaa的隐式转换那么,执行完aaa=333;之后
    aaa其实就是一个新的AAA实例,aaa里的s2=="";还是那句话,赋值是赋值,类型转换是类型转换,二者没一点关系,别扯到一起去。另外希望#6这位哥们 如果自己不懂得话就少说,自己犯错误不要紧,但是误导了别人可是很麻烦的。
      

  6.   

    VB6.0的时候就有一种用法如果A是TEXTBOX
    那么可以用A="1"
    来代表A.Text="1";