1樓:
請問陣列是值型別還是引用型別?搞清這個,你立即就會明白。
int a = 8;
int b =a;
b = 1;
int是值型別的,
int a =
int b = a;
b[1] = 8;
int是引用型別的。
至於new int[2]只是宣告瞭指標,並未真正指向,如果使用b =a時,那麼指標指向了a,兩者同一託管堆中的物件,所以這種方式只是指的同一物件,與值型別不同。若想實現類似不同物件,值相同的情況下,可以參考淺表複製與深度複製的內容,實現類之間的引用型別數值複製。
2樓:匿名使用者
樓主您的詳情請檢視
引用型別 與值型別
引用型別:
引用型別 由型別的實際值引用(類似於指標)表示的資料型別。如果為某個變數分配一個引用型別,則該變數將引用(或「指向」)原始值。不建立任何副本。
引用型別包括類、介面、委託和裝箱值型別。
值型別 (value type)
一種由型別的實際值表示的資料型別。如果向一個變數分配值型別,則該變數將被賦以全新的值副本。(這與引用型別不同,在引用型別中,賦值時不建立副本。
)值型別通常建立在方法的棧幀上,而不是在垃圾**堆中。可以對值型別進行裝箱,這是一個建立相應引用型別的過程。
3樓:匿名使用者
因為有bb==aa,現在bb就是aa了,你對bb賦值,也就是對aa賦值
4樓:匿名使用者
指向同一個記憶體空間了
c#將陣列放入佇列,再修改陣列值,佇列裡面的值也跟著修改了,怎麼解決??
5樓:匿名使用者
這裡面有引用的概念,qlist.enqueue(test1); 存的可能就是 test1在記憶體中的地址,這個地址指向的就是陣列裡回面的元素,test1[0]="abc"; 這句改答的是陣列裡面元素的值,但是test1這個物件在記憶體中的地址本身沒有變。所以會出現這樣的現象
最直接的辦法
queueqlist = new queue();
string test1 = ;
string test2 = ;
qlist.enqueue(test2);
test1[0]="abc";
c# 將一個陣列賦值給另一個陣列的問題
6樓:匿名使用者
親,陣列是引用型別,你把a附給了b,那麼a和b就是指向堆記憶體中的同一個內容,排序一個當然會影響另一個
j**a中為什麼改變了複製後的陣列的值原陣列裡面的值也會被改變
7樓:在大滌山招標的波斯貓
因為陣列是一個物件
也許樓主是做了類似這樣的事
int i1 = new int[10];
int i2 = i1;
這樣的話i1和i2訪問的是記憶體中的同一段資料,所以修改一個,另一個也跟著改變了
想要不改變的話應該這樣複製
int i1 = new int[10];
int i2 = new int[10];
for(int i=0;i 兩個陣列就可以獨立操作了 但是如果是一個複合引用型別的陣列,即使用第二種方式複製,結果仍是修改一個,另一個跟著變 8樓:匿名使用者 有值型別和引用型別,複製函式是引用型別做引數 c#中呼叫一個方法後,為什麼會把引數的值改變了 9樓:busy氣壯山河 1. 引數陣列-----params(可以將相同型別,數量可變的多個引數傳給一個方法) 2. 引入: 一般,引數的數量都是由目標方法宣告所確定。然而,有時我們希望引數的數量是可變的。或許最好的方法是為方法傳一個陣列。 10樓: 引數是引用型別的話,物件的成員是可以被改變的 或者ref修飾的值型別也可以被改變 c#動態建立了多個控制元件,在另一個事件中怎麼修改某個控制元件的屬性? 11樓:匿名使用者 宣告一個全域性的控制元件陣列,在this.controls.add的同時,也將控制元件的引用賦給陣列中的元素,之後在button2_click中可以通過陣列索引器去取得控制元件然後就可以隨便操作了 12樓:匿名使用者 你可以用this.controls.find("pbx" + i.tostring(), true);去找到該控制元件。 13樓:匿名使用者 picturebox pbx = new picturebox(); pbx = this.findcontrol("pbx1") as picturebox; 然後 pbx.屬性=值 應該就可以了。 c# 陣列索引超出界限,幫我看下怎麼改? 求解釋 14樓:仙戈雅 static void main(string args)行,第列的元素", i, j); numb[i, j]=convert.toint32(console.readline());}} }另外,c#在定義二維陣列時,若尾部跟隨了"{}"花括號意味著你要初始化它,即定義時就進行集合初始化,此時則可以忽略陣列大小,形如下面的形式就是正確的: int[,] numbers = new int[,] , , };// 正確。 15樓:匿名使用者 二維陣列定義錯誤: int[,] numb = new int[, ] ; 這樣定義表示numb陣列裡面沒有值; 改為: int[,] numb = new int[n,m];正解; 是錯誤的。char cchar count 宣告瞭cchar是有count個元素的陣列,每個元素都是指向char型變數的指標。但cin cchar i 卻試圖給cchar的第二個元素 指標 賦一個鍵盤值 這裡指標還沒有確定指向,是隨機的,它隨機地指向了不能寫入的地方,就要出錯。這裡應該先給指標陣列賦... 陣列名作函式引數 陣列名可以作函式的實參和形參。如 12 3456 78910 11main f int arr,int n array為實引數組名,arr為形引數組名。在學習指標變數之後就更容易理解這個問題了。陣列名就是陣列的首地址,實參向形參傳送陣列名實際上就是傳送陣列的地址,形參得到該地址後也... 可以這樣實現 object arr new object 2 將object看做一個二維陣列,因為它的元素是object型別,可以儲存陣列 arr 0 new float 10 第一個元素儲存一個float陣列,其他型別同理 arr 1 new int 5 float arr 0 0 1.0f 還原...c 指標陣列問題,C 中關於指標陣列的問題。
C陣列的引用做函式引數怎麼寫,c 中關於陣列作為函式引數的幾種方法
C中的元素型別(關於陣列)