麻烦看下这几种代码的有关问题,多谢各位

麻烦看下这几种代码的问题,谢谢各位!
1. 
public class  a {
     private static List<entity> lie;
     public  void Set(){
           给lie赋值
     }
}


2.
public class  a {
     private List<entity> lie;
     public  void Set(){
           给lie赋值
     }
}


3.
public class  a {
     public static List<entity> lie;
     public  void Set(){
           给lie赋值
     }
}

上面3种代码,哪几个会有问题?谢谢大家!
------解决思路----------------------
1和3不是一样的?然后不懂你的意思,你这种写法编译都是能通过的,static方法才要求被调用的类变量是static的,你非static的方法去调用赋值从编译角度讲没错
------解决思路----------------------
线程安全是要看你应用场景的,不是单纯的说有没有,理论上第二种应该是没有的,但如果它的载体a被用到了其它地方,并且被static readonly了,那第二种写法在多线程的情况下也会有线程安全的问题
------解决思路----------------------
线程安全问题不是通过你这里的代码看的,关键是看static变量在多线程进行变更时的线程控制知否存在问题。
------解决思路----------------------
List<T>并不是线程安全的,.net4.0新引入的System.Collections.Concurrent命名空间下的类才是线程安全的。
------解决思路----------------------
贴错了,不好意思。。。。
------解决思路----------------------
要线程安全,请加锁吧.
------解决思路----------------------
引用:
我的 意思 是   会不会存在线程安全的问题


引用:
我的 意思 是   会不会存在线程安全的问题


引用:
我的 意思 是   会不会存在线程安全的问题


引用:
我的 意思 是   会不会存在线程安全的问题


引用:
我的 意思 是   会不会存在线程安全的问题


引用:
我的 意思 是   会不会存在线程安全的问题


引用:
我的 意思 是   会不会存在线程安全的问题


引用:
我的 意思 是   会不会存在线程安全的问题


引用:
我的 意思 是   会不会存在线程安全的问题


引用:
我的 意思 是   会不会存在线程安全的问题


问题 说清楚,你不说,谁知道你问的是线程问题。。。

你上面那三个都会有线程问题 ,在set里面加个lock
------解决思路----------------------
1和3肯定有问题啊,静态变量是共享的,反正托管堆里就只有一个空间给它,哪条线程访问或者设置,都是同一个地址,你学会能安全吗?

不过你1号里把静态变量私有化,不允许外部访问罢了,但对于多次new a()来说,它们访问可设置的都是托管堆里同一个地址,这和3号差不多,只不过3号允许外部访问这个地址罢了

像楼上几位说的,想要安全式的,就得用他们说的方式