_阿山 2017-05-31 05:13 采纳率: 100%
浏览 1140
已采纳

C#中字段和局部变量的问题

我先写两个类Test1和Test2,目的是想不通过new调用另一个类中的方法

 public class Test1
{
    public void Method1()
    {
        Console.WriteLine("343");
    }
}
public class Test2
{
    Test1 ts1;
    public void Say()
    {
        ts1.Method1();
    }
}

这样,我在Test2中只需要声明一下就可以在Say()中调用他的方法了(这是我不理解的,使用一个类中的方法就要new一个该类的对象才可以。但是这个写成字段了不用new也可以啊。不是说C#中必须要new了才能使用吗?)
如果在Test2中这样写,就会报错(使用了为赋值的局部变量“ts1”)
图片说明](https://img-ask.csdn.net/upload/201705/31/1496207496_321992.jpg)

 public class Test2
{
    public void Say()
    {
        Test1 ts1;
        ts1.Method1();
    }
}


只有这样,也是我一直以为的必须new

 public class Test2
{
    public void Say()
    {
        Test1 ts2 = new Test1();
        ts2.Method1();
    }
}

这样才不会报错。
搞不懂,字段属性和对象我发现我突然不懂了……希望有大虾解答 -_-

  • 写回答

3条回答

  • 冷咖啡15 2017-05-31 05:16
    关注

    类的字段属性,默认情况下自动赋值为null,可以通过外面进行设置;如果外部没有给它赋值,当执行到此处时也会报空指针异常的;
    局部变量,如果不赋值,不会某人赋值null所以需要自己手动赋值。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作
  • ¥15 求NPF226060磁芯的详细资料