c#属性是什么时候生成的
我在一个类库里面写上 
string s = "a"; 
SqlConnection sql=new SqlConnection(s) 
这时传入的参数s说找不到 
这是为什么 
我问老师,老师说c#和java不同 
是先要实例化一个对象,才会有他的属性. 
我试着把它改成静态的 
static string s = "a"; 
SqlConnection sql=new SqlConnection(s) 
s能找到了 
但我还是不明白这段如果在JAVA中这样写的话是没问题
为什么在C#中不行呢

解决方案 »

  1.   

    连接字符串我随便写了个,只是想举个例子.
    关键是为什么s会找不到
    要把他定义成static才不会出错
      

  2.   

    class AA{
    static string s = "a"; 
    SqlConnection sql=new SqlConnection(s) 
    Test()
    {}
    }
    就是没有写在方法内部,但JAVA中可以的啊
      

  3.   

    呵呵。。经过试验证明。。是不可行的。除非static。如果你要对字段赋值。可以在构造函数当中完成
      

  4.   

    静态类和类成员用于创建无需创建类的实例就能够访问的数据和函数,你在类库
    里面定义了一个string,而它又是非静态的,你不能用SqlConnection这个类进行访问
    (SqlConnection本身是个类),除非你把它写到方法内部!
      

  5.   

    msdn
    Visual C# 参考:错误和警告
    编译器错误 CS0236错误消息
    字段初始值设定项不能引用非静态字段、方法或属性“field”实例字段不能用于初始化方法之外的其他实例字段。如果您正尝试在方法之外初始化一个变量,请考虑在类构造函数内部执行初始化。有关更多信息,请参见方法(C# 编程指南)。下面的示例生成 CS0236:
    复制代码// CS0236.cs
    public class MyClass
    {
       public int i = 5;
       public int j = i;  // CS0236
       public int k;      // initialize in constructor   MyClass()
       {
          k = i;
       }   public static void Main()
       {
       }
    }