相关疑难解决方法(0)

C#中的引用类型

考虑以下代码:

public class Program
{
    private static void Main(string[] args)
    {
        var person1 = new Person { Name = "Test" };
        Console.WriteLine(person1.Name);

        Person person2 = person1;
        person2.Name = "Shahrooz";
        Console.WriteLine(person1.Name); //Output: Shahrooz
        person2 = null;
        Console.WriteLine(person1.Name); //Output: Shahrooz
    }
}

public class Person
{
    public string Name { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

很显然,当分配person1person2Name物业person2发生变化,Nameperson1也将改变.person1person2有相同的参考.

为什么何时person2 = null,person1变量也不会为空?

.net c# pointers

78
推荐指数
4
解决办法
6754
查看次数

Java拷贝多维数组,随机错误

我一直在调试我的Game of Life的实现,我的主要问题看起来就像是我使用数组的方式.

public boolean[][] oldState;
public boolean[][] newState;
private boolean gameState = true;

public LifeBoard(Seed seed) {
    oldState = seed.getSeed();
    newState = new boolean[oldState.length][oldState[0].length];
    run();
}

public void run() {
    //debug code to run for x generations
    for (int i = 0; i < 5; i++) {
        BoardPrinter.print(oldState);
        evaluateCells();
        oldState = newState;        
    }
    BoardPrinter.print(oldState);
    System.out.println("game over");
}
Run Code Online (Sandbox Code Playgroud)

Seed的boolean [] []为5x5网格,除中间行的3个水平中间单元外全部为假(死)

00000
00000
0+++0
00000
00000
Run Code Online (Sandbox Code Playgroud)

evaluateCells()查看网格中的每个单元格,查看它周围的8个单元格,对它们进行计数,并根据邻居数量将新值写入newState.

应该发生什么:使用oldState计算newState,将newState复制到oldState,然后返回newState,再根据新的oldState写入每个单元格.

真正发生了什么:第一代正常工作,但之后结果越来越奇怪,它评估单元格是假的,我知道是真的,等等.问题似乎是我复制数组的方式.

如果我初始化第3个空白数组blankState [] [] = new boolean [5] [5]; 并且在运行循环期间说:

public void …
Run Code Online (Sandbox Code Playgroud)

java arrays

1
推荐指数
1
解决办法
89
查看次数

为什么抛出空指针异常?

我已经在这里问了一个矛盾问题 为什么这不会抛出NullPointerException?

但这是我想知道的不同类型和行为之一,请查看下面的示例

package com;

public class test {

    public static void main(String[] args) {
        Abc abc = null;

        //Scenario 1
        System.out.println("ERROR HERE " + abc!=null?abc.getS1():""); //This is throwing null pointer exception 

        //Scenario 2
        String s1 = abc!=null?abc.getS1():"";
        System.out.println("This is fine " + s1);
    }
}

class Abc {
    String s1;

    public String getS1() {
        return s1;
    }

    public void setS1(String s1) {
        this.s1 = s1;
    }


}
Run Code Online (Sandbox Code Playgroud)

所以在这里,场景2可以正常工作但是当我在场景1中使用其他字符串连接尝试它时它为什么不起作用?

java nullpointerexception

0
推荐指数
1
解决办法
134
查看次数

标签 统计

java ×2

.net ×1

arrays ×1

c# ×1

nullpointerexception ×1

pointers ×1