我正在尝试使用while循环来确定进程何时完成,但为了建立完成,我必须将之前的运行与当前运行进行比较,因此我将比较数组设置为原始...这显然是在创造某种参考,因为当我改变原始的值时,#34; Distinct"数组,值也会在" InDistinct"比较数组。我该如何预防/解决这个问题?否则我的" while(Distinct!= InDistinct)"是没用的。
module V1
class UsersController < ApiController
before_action :set_user, only: [:show, :update, :destroy]
def show
render json: @user, include: params[:include], status: :ok
end
private
def set_user
@user = User.find(params[:id])
end
def user_params
attribute_params.permit(:email, :password, roles: [])
end
def assign_roles
end
end
end
答案 0 :(得分:1)
在你的while循环开始时这个语句不是这样做的吗?
while (InDistinct != Distinct)
{
InDistinct = Distinct;
循环的条件是检查InDistinct数组值是否不等于Distinct值,但是通过将InDistinct值分配给不同的值后,使两者相等。
答案 1 :(得分:1)
我最终在While循环上面启动了InDistinct数组,并通过嵌套for循环将Distinct数组复制到它:
int[,] InDistincta= new int[100,100];
while (InDistincta != Distinct)
{
for (int a = 0; a < 100; a++)
{
for (int b = 0; b < 100; b++)
{
InDistincta[a, b] = Distinct[a, b];
}
答案 2 :(得分:0)
数组是一种机制,允许您将多个项目视为一个 单一集合。 Microsoft®.NET公共语言运行时(CLR) 支持一维数组,多维数组和 锯齿状数组(数组数组)。所有数组类型都是隐式的 派生自System.Array,它本身派生自System.Object。 这意味着所有数组都是引用类型 在托管堆上分配,您的应用程序的变量包含一个 引用数组而不是数组本身。 https://msdn.microsoft.com/en-us/library/bb985948.aspx
所以你需要改变
InDistinct = Distinct;
只是因为在该行之后,这两个名称引用了同一个对象。
尝试将目标数组复制到InDistinct对象
targetArray = new string[sourceArray.Length];
sourceArray.CopyTo( targetArray, 0 );
用于多维数组
Array.Copy(sourceArray,targetArray, sourceArray.Length);