关于c#的一些疑问,估计很简单
1.在一个类A中定义个私有变量a,再定义个方法,在该方法中再定义一个对象A test=new A();
为什么这个地方的test能访问私有变量a呢?对对象test来说a不是私有的吗?是不能访问的吗?
2.在一个方法中定义一个对象,并在该方法中为该对象加锁,在锁的生命周期中在调用自己这个方法,会产生死锁吗
3.在一个主线程中定义一个从线程,关闭主线程会关闭从线程吗?或者是在主线程中新建两个线程
a,b 线程a与线程b是没有什么关系的,是吗?
1.是可以访问私有变量的
2.不会产生死锁
3.主线程和从线程是有关系的。从线程与从线程之间是没有什么关系的 c#
[解决办法]
1.定义的a指的是类的私有变量,每个对象有有属于自己的a。
A test=new A()
B test2=new B()
A里面的a跟B里面的a是两个东西,虽然名字都一样
[解决办法]
有一个类叫学生,学生有私有变量学号,
学生类实例化:
学生 张三 = new 学生();
于是张三具有了学号这个变量.
2.3不会 我也是小白.
[解决办法]
你是自问自答吗?上面问题下面答案,虽然答案不一定准确。
1、2的答案算是没问题,3的答案是错误的,各个线程直接都没有关系,不分主从,只有后台线程的区分,所谓后台线程,就是不能单独存在的线程,当其它线程都退出了,剩下后台线程也活不了,自动消失,进程结束。
[解决办法]
第一个问题我有个疑问。你是怎么访问a的?
第二个问题。你不但是死锁。是死循环了吧?一个递归调用
第三个。线程是独立的。你关闭了主线程。别的线程自己不终止也是不会关闭的。
[解决办法]
1,
public void print()
{
A gg = new A("sfd");
gg.strname="dfdf";//私有变量在类内部都可以访问。
//这个this是你在外部方法new A的时候的那个对象,而gg是你在在new A后的对象调用的print方法的时候重新new A的对象,所以,当你调用了print方法,你new了两个A,this就是调用print方法的那个对象
this.strname = "dfdf";// }
class Program
{
private string a {set; }
public Program()
{
a = "0.0";
}
static void Main(string[] args)
{
Program c = new Program();
Console.WriteLine(c.a);//这里c.就访问不到了 - -
Console.Read();
}
public string b()
{
return a;
}
}