相关疑难解决方法(0)

C#按值传递而不是按引用传递

请考虑以下代码(我有意将 MyPoint编写为此示例的引用类型)

public class MyPoint
{
    public int x;
    public int y;
}
Run Code Online (Sandbox Code Playgroud)

它是普遍公认的(至少在C#中)当你通过引用传递时,该方法包含对被操作对象的引用,而当你通过值传递时,该方法复制被操纵的值,因此全局范围中的值是不受影响.

例:

void Replace<T>(T a, T b)
{
    a = b;
}

int a = 1;
int b = 2;

Replace<int>(a, b);

// a and b remain unaffected in global scope since a and b are value types.
Run Code Online (Sandbox Code Playgroud)

这是我的问题; MyPoint是引用类型,所以我希望在相同的操作Point,以取代ab在全球范围内.

例:

MyPoint a = new MyPoint { x = 1, y = 2 };
MyPoint b = new …
Run Code Online (Sandbox Code Playgroud)

c# value-type reference-type pass-by-reference pass-by-value

9
推荐指数
2
解决办法
7759
查看次数

引用类的值类型成员时是否会发生拆箱?

我读了什么是拳击和拆箱,有什么权衡?但无法理解一件事.假设我有一个班级:

class MyClass
{
    public int Value { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

我想在我的方法中获得价值:

void MyFunc(MyClass cls)
{
    int i = cls.Value;
}
Run Code Online (Sandbox Code Playgroud)

作为一个放在堆中的类,我猜那个值也放在堆中了吗?因此操作

int i = cls.Value;
Run Code Online (Sandbox Code Playgroud)

拆箱?或者它不是拆箱?

.net c# unboxing

6
推荐指数
3
解决办法
1277
查看次数

值类型和引用类型问题

嗨,我正在尝试做两个对象的简单交换.我的代码是

void Main()
{
  object First = 5;
  object Second = 10;

  Swap(First, Second);
  //If I display results it displays as 
  //Value of First as 5 and Second as 10
}

private static void Swap(object First, object Second)
{
  object temp = First;
  First = Second;
  Second = temp;
}
Run Code Online (Sandbox Code Playgroud)

由于对象是引用类型,因此应将其引用传递给方法,并且应该交换.为什么不发生?

.net c# swap reference-type

3
推荐指数
2
解决办法
2692
查看次数

Java,传值,引用变量

在以下示例中,我对理解Java的"pass-by-value"操作有疑问:

public class Numbers {

    static int[] s_ccc = {7};
    static int[] t_ccc = {7};

    public static void calculate(int[] b, int[] c) {

        System.out.println("s_ccc[0] = " + s_ccc[0]); // 7
        System.out.println("t_ccc[0] = " + t_ccc[0]); // 7

        b[0] = b[0] + 9;  
        System.out.println("\nb[0] = " + b[0]); // 16

        c = b;
        System.out.println("c[0] = " + c[0] + "\n"); // 16
    }

    public static void main(String[] args) {

        calculate(s_ccc, t_ccc);

        System.out.println("s_ccc[0] = " + s_ccc[0]);  // 16
        System.out.println("t_ccc[0] = " …
Run Code Online (Sandbox Code Playgroud)

java reference pass-by-value

2
推荐指数
4
解决办法
8750
查看次数

Unity3D localscale问题

如下代码:

Debug.LogWarning("updating scale fix, scalefactor: "+scaleFactor+" - Current scale is: "+cell.transform.localScale.x);
cell.transform.localScale.Set (scaleFactor,scaleFactor,scaleFactor);
Debug.LogWarning("Scale after fix: " + cell.transform.localScale.x);
Run Code Online (Sandbox Code Playgroud)

产生以下输出:

updating scale fix, scalefactor: 0.9 - Current scale is 0.8921105
UnityEngine.Debug:LogWarning(Object)

Scale after fix: 0.8921105
UnityEngine.Debug:LogWarning(Object)
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?我只是假设由于这些事情是紧接着发生的,因此应该更新规模。还是在框架完成之后发生?

任何帮助表示赞赏。

c# transform scale unity-game-engine

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