_阿山 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 fluent的在模拟压强时使用希望得到一些建议
  • ¥15 STM32驱动继电器
  • ¥15 Windows server update services
  • ¥15 关于#c语言#的问题:我现在在做一个墨水屏设计,2.9英寸的小屏怎么换4.2英寸大屏
  • ¥15 模糊pid与pid仿真结果几乎一样
  • ¥15 java的GUI的运用
  • ¥15 Web.config连不上数据库
  • ¥15 我想付费需要AKM公司DSP开发资料及相关开发。
  • ¥15 怎么配置广告联盟瀑布流
  • ¥15 Rstudio 保存代码闪退