//在此处想实现将a的值转换成字符串之后赋给参数str1
为什么要在静态函数里做?
  
*****************************************************************************
签名档: http://feiyun0112.cnblogs.com/

解决方案 »

  1.   

    传一个实例:public static void func1(string str1, A instance)
    {
        instance.a = int.Parse(str1);
    }
      

  2.   


    该静态函数是一个dll文件里的其中的一个类的方法,另外一个dll文件调用了该方法,传回参数str1,该静态方法的静态属性是另外一个dll文件的调用约定且不能修改静态属性。
      

  3.   

    你的func1方法是静态的,代表fun1方法是不依赖于任何具体的 class A对象的。
     //在此处想实现将a的值转换成字符串之后赋给参数str1
                  //在此操作访问变量a的时候会报错。

    虽然你这个代码想做的事情我不太清楚,因为str1是输入参数,而不是输出参数。
    但你若想在此方法里面操作变量a,那么变量a就必须是静态的,不依赖于具体Class A对象而存在的。
      

  4.   


    该静态方法的参数列表只能有一个参数而且是string类型,即便参数列表可以修改,传入对象之前也需要进行实例化对象吧,调用该方法的dll文件是C++写的dll,这个方法是C#写的dll,按理讲的话,就是在另外一个dll文件调用该方法之前需要实例化一个A的对象,一个是C++dll一个是C#dll呵呵,迷茫了。
      

  5.   


    //在此处想实现将a的值转换成字符串之后赋给参数str1---->这句话暂且不起作用。你说的没错,我主要想实现的功能就是根据传入的参数str1,将str1作为判断条件,在该方法中实现对变量a的一些操作。要操作a就得将a声明成static,但是类A在构造的时候又要访问a,这不还是有问题吗?
      

  6.   

    多么简单的事情,你把构造函数里面this.去掉就行了。
    因为如果是静态变量,就不是this这个实例的拉。
     public A(int b)
                  {
                    this.a=b;//删掉this
                  }给你个测试的控制台democlass A
        {
            public  static  int a=0;
            public A(int b)
            {
                a = b;
            }
            public static void func1(string str1)
            {
                //在此处想实现将a的值转换成字符串之后赋给参数str1
                //在此操作访问变量a的时候会报错。            a = int.Parse(str1);
            }
        }
        class Program
        {
            static void Main(string[] args)
            {
                Console.WriteLine(A.a);
                A A1 = new A(3);
                Console.WriteLine(A.a);
                A.func1("9");
                Console.WriteLine(A.a);
                Console.Read();
            }
        }