利用out關鍵字向函式傳遞List引數遇到的問題
引言
今天使用out關鍵字向函式傳遞List<T>引數遇到了一點問題,做個記錄。之前只是大概瞭解out關鍵字就是作為引用傳遞。
遇到的問題
今天先寫了如下程式碼:
using System;
using System.Collections.Generic;
using System.Text;
namespace ConsoleApplication1
{
class Program
{
static public void Main()
{
List<int> myArray = new List<int>();
FillArray(out myArray);
Console.WriteLine("List.count: " + myArray.Count);
Console.ReadLine();
}
static public void FillArray(out List<int> myArray)
{
myArray = null;
myArray.Add(1);// 這裡執行會出錯
}
}
}
執行到myArray.Add(1);處會報錯
定位問題出現在myArray = null;
查閱了資料獲悉,不必初始化作為 out 引數傳遞的變數,必須在方法返回之前為 out 引數賦值。
程式碼修改為:
using System; using System.Collections.Generic; using System.Text; namespace ConsoleApplication1 { class Test1 { static public void Main() { //List<int> myArray = new List<int>(); // 這裡不需要對myArray進行初始化 List<int> myArray = null; FillArray(out myArray); Console.WriteLine("List.count: " + myArray.Count); Console.ReadLine(); } static public void FillArray(out List<int> myArray) { myArray = new List<int>(); // 需要對myArray重新分配儲存空間 //myArray = null; myArray.Add(1); // 這裡執行會出錯 } } }
當然也可以刪除程式碼片段1中的out關鍵字,通過值傳遞可以避免這個問題。
總結分析
這個問題總感覺解決的不徹底,沒有搞清楚myArray = null 與 myArray =new List<T>;這裡還有什麼問題存在。這次僅僅作為自己的總結,下次有新的想法再補充進來。
附上一些參考資料:
相關推薦
利用out關鍵字向函式傳遞List引數遇到的問題
引言 今天使用out關鍵字向函式傳遞List<T>引數遇到了一點問題,做個記錄。之前只是大概瞭解out關鍵字就是作為引用傳遞。 遇到的問題 今天先寫了如下程式碼: using System; using System.Collections.Generic;
ajax向後臺傳遞list引數
學習記錄:複習 使用ajax向後臺傳遞list引數 前臺 jsp頁面 <button onclick="login222();">測試</button> js function login222() { var l
C++函式的陣列引數—向函式傳遞陣列
C++學習之函式的陣列呼叫----、 當函式中的某個引數是陣列時,在引數名後加上一對中括號,比如int a[],表示引數a是一個數組。下面我們就來看這樣一個在一堆正數裡面找一個最大數的程式:(( #include "iostream.h" int max(int a
postman傳遞list引數給Springboot的controller
post在raw中選擇,傳遞json格式的資料,資料格式,如下: [ &nbs
SSH 框架controller向jsp傳遞List jsp中使用el表示式獲取
mvc可以使用ModelAndViev傳遞資料選擇跳轉的檢視 controller中的程式碼, 把一個模擬的表單studentListSimulate傳給ModelAndView @RequestMapping("/detial") public Model show
SSH 框架controller向jsp傳遞List jsp中使用el表達式獲取
color 表單 src 模擬 如何 bsp alt 分享 pri mvc可以使用ModelAndViev傳遞數據選擇跳轉的視圖 controller中的代碼, 把一個模擬的表單studentListSimulate傳給ModelAndView @Reques
C語言函式傳遞指標引數
#include <stdio.h> void swap(int *a,int *b) { printf("address in swap():%p %p\n",a,b); int temp=*a; *a=*b; *b=temp; } i
向函式傳遞物件(C++學習筆記 24)
一、使用物件作為函式引數 在向函式傳遞物件時,是通過 “ 傳值呼叫 ” 傳遞給函式的,即單向傳遞,只由實參傳給形參,而不能由形參傳回來給實參。因此函式中對物件的任何修改均不影響呼叫該函式的物件(實參)本身。 例 1 :使用物件作為函式引數 #include<iostream
指標8(應用指標向函式傳遞陣列)
要在函式中使用實引數組元素或改變實引數組元素的值,有三種對應方法 1)實參用陣列名,形參用指標變數。 2)實參用指標變數,形參用陣列名 3)實參和形參都用指標變數 給出一道例題 應用函式與指標,對長度為10的一維陣列進行從小到大排序。 #include<stdio.h> vo
C++向函式傳遞陣列
C++向函式傳遞陣列 陣列的儲存空間很大,如果能夠把它作為引數傳遞給函式,那麼就能發揮很大的作用了。比如本來一個選出最大數的max函式只能在兩個數或三個數裡面選出一個最大的數字,如果我們把陣列傳遞過去,它就能夠在一堆數字中選出最大的數了,這大大提高了程式的效率。當函式中的某個引數是陣列時,在
jsp中EL表示式向後臺傳遞list集合物件
jsp頁面程式碼: <form:form id="update" modelAttribute="enterpriseNumInfoListSelf" action="${ctx}/enterprise/num/update" method="post"> <
JNI開發:Java呼叫C/C++函式傳遞Array引數並返回Array值
此篇Java呼叫C/C++函式來實現給int陣列[12,45,67]的每個元素加17; java呼叫: int array[] = { 12, 45, 67 }; array = jniTools.intA
Android利用post方式給webview傳遞json引數
需求:利用webview開啟一個URL介面,並且利用post方式傳遞引數一個json字串的引數; 主要程式碼如下:省略了webview的設定 @Override public void on
python flask 通過ajax向後臺傳遞陣列引數
ajax 像後臺傳遞引數,一般是字典的形式傳遞,但是如果字典的value的值是一個數組的話,通過request.form 獲取得到的結果是 None。這是就需要把陣列物件轉化為json字串,後臺才可
js如何向陣列中新增物件並通過ajax向後臺傳遞list資料
js動態向陣列新增物件,並通過ajax提交List資料到後臺 var data=[{name: '張三',age: 18,id: 1},{name: '李四',age: 22,id: 2}]; var test= []; for (var i = 0; i < data.le
如何向OrderBy傳遞字串引數(Entity Framework)
AppBox 是基於 FineUI 的通用許可權管理框架,包括使用者管理、職稱管理、部門管理、角色管理、角色許可權管理等模組。 Entity Framework提供的排序功能 再來回顧一下上篇文章,載入使用者列表並進行排序資料庫分頁的程式碼: var q = DB.Users.Incl
JSP向Servlet傳遞陣列引數
今天需要做一個多選刪除功能,需要從JSP中獲取已勾選的多選框的值,傳遞到Servlet中進行刪除操作。 <input type="checkbox" name="checkProduct" value="${product.pid}"> <input ty
函式傳遞的引數是原引數的副本
函式的傳遞的引數是原引數的副本 使用C語言程式設計,不可能不用到函式,但是函式的引數傳遞,我們是否真的清楚了呢。本文主要介紹C語言中函式傳遞的引數。。 函式的引數通常分為兩種,普通變數,指標變數。這些引數,將會被函式體呼叫,當讓,也可以傳入一些永遠不被函式呼叫的
c/c++向函式傳遞指標並修改其指向的問題
一個用來交換兩個數的值的函式,眾所周知的錯誤寫法為: #include <iostream> using namespace std; void swap(int a, int b) { int t = a; a = b; b = t;
shell程式設計向函式傳遞陣列
有時候 ,可能需要向函式中傳遞 陣列,這個時候,就需要向 函式中傳遞陣列, 本文以排序為例,簡單的演示如何向函式 傳遞陣列。 大家都知道 向函式中傳遞引數 可以用$1 這個變數即可。 但是 如果 要傳遞陣列 可能不行哦。 直接看下面的例子 #!/bin/bash fun