我需要寫一個函式,回傳值是陣列形式,那函式的形參應該怎么寫,傳遞的實參如何寫?還有引數的型別如何匹配
uj5u.com熱心網友回復:
不必糾結“回字有多少比劃?”,自學最基本的東西。uj5u.com熱心網友回復:
能給解釋解釋嗎
uj5u.com熱心網友回復:
我沒理解你回傳值是陣列和引數有什么關系函式引數只與你函式要做的事有關系,也就是比如一個加法函式 引數是兩個int型別或者其他數字型別 但是回傳值可以是任意型別 我直接在內部輸出了 就不需要往外回傳 所以回傳值是void 外面需要知道相加之后的和 我可以回傳 int double float long 等等 哪怕你反個string 然后讓外面自己去轉換型別
uj5u.com熱心網友回復:
我想實作的操作是將資料庫表讀入然后對其中的一列進行處理,然后在將這列在listview上顯示,我的做法是寫了個函式,把資料先讀入到datatable中,然后對B列的沒一個資料datatable.row(i).item("B")/B_average,然后將獲得的這一列數儲存到陣列arr1中,然后在listview顯示這一列數,現在寫這個函式不讓return arr1,而且在listview那里呼叫這個function的時候引數也不知道應該寫什么。。拜托大神如果有時間的話幫我解決解決這個問題,十分感謝uj5u.com熱心網友回復:
函式怎么不讓 return arr1 ?沒有定義回傳值嗎? public double[] 函式名(){} 這樣的你定義了么?引數又是什么?引數和回傳值完全沒有關系啊,而且看你需求好像不需要引數啊
uj5u.com熱心網友回復:
你的vb.net 啊,那語法略有不同
Public Function 函式名(引數 As Object) As Double()
Dim arr As Double() = {1, 2, 3}
Return arr
End Function
引數和引數,回傳值是回傳值,要么你代碼貼下,看看你的思路
uj5u.com熱心網友回復:
您好,我把代碼貼上,您如果有時間的話幫我看一看可以嗎,
Imports System.Data.SqlClient
Public Class IntoArray
Public Function SqlInput() As Integer(,)
Dim conn As SqlConnection = New SqlConnection(DbConnstr.connstring()) '創建鏈接物件
Dim sqlStr As String = "select * from test_data"
Dim cmd As SqlCommand = New SqlCommand(sqlStr, conn) '創建命令物件
Dim da As SqlDataAdapter = New SqlDataAdapter(cmd)
Dim ds As New DataSet
Try
conn.Open()
da.Fill(ds, "Dtable")
Catch ex As Exception
conn.Close()
Throw New Exception(ex.Message)
Finally
conn.Close()
End Try
Dim B_max As Integer = Dtable.Compute("max(B)", "")
Dim B_min As Int32 = Dtable.Compute("min(B)", "")
Dim A_max As Int32 = Dtable.Compute("max(A)", "")
Dim A_min As Int32 = Dtable.Compute("min(A)", "")
Dim D_max As Int32 = Dtable.Compute("max(D)", "")
Dim D_min As Int32 = Dtable.Compute("min(D)", "")
Dim P_max As Int32 = Dtable.Compute("max(P)", "")
Dim P_min As Int32 = Dtable.Compute("min(P)", "")
Dim B_average As Int32 = (B_max - B_min) / 5
Dim A_average As Int32 = (A_max - A_min) / 5
Dim D_average As Int32 = (D_max - D_min) / 5
Dim P_average As Int32 = (P_max - P_min) / 5
Dim arr1(,) As Int32
For i = 0 To Dtable.Rows.Count - 1
If Dtable.Rows(i).Item("B") / B_average < 1 Then
arr1(i, 1) = 20 * 0.4
ElseIf Dtable.Rows(i).Item("B") / B_average < 2 Then
arr1(i, 1) = 40 * 0.4
ElseIf Dtable.Rows(i).Item("B") / B_average < 3 Then
arr1(i, 1) = 60 * 0.4
ElseIf Dtable.Rows(i).Item("B") / B_average < 4 Then
arr1(i, 1) = 80 * 0.4
Else
arr1(i, 1) = 100 * 0.4
End If
Next
Return arr1
End Function
End Class
實作的功能就是這個表里的badp這四列分別取一個(最大值-最小值)/5的值,然后這四列的每一行分別除以這個值,得到的結果我想存到陣列里回傳
uj5u.com熱心網友回復:
Dim arr1(,) As Int32 這句只是定義了arr1這個陣列,沒有分配大小,后面不能直接賦值,你要么用集合,最后轉換為陣列,要么根據行數定義大小uj5u.com熱心網友回復:
比如定義為Dim arr1(Dtable.Rows.Count - 1, 1) As Int32
不過資料型別為什么是int32?你不是要乘0.4嗎?那應該是用小數啊
uj5u.com熱心網友回復:
我將資料型別改成double,Dim arr1(4, 50) As Double
然后Public Function SqlInput() As Double(,)函式定義這里
我現在要在按鈕里呼叫這個函式的話,我應該怎么寫,
dim Intoarr as new Intoarray
回傳值=intoarr.sqlinput(引數)
用什么接這個回傳值,呼叫的時候,傳遞的引數怎么寫。。。。
大神你幫我看看,我這個函式里是不是沒有引數啊,
uj5u.com熱心網友回復:
你這個沒有引數回傳值型別現在語法可以不寫了,系統會推斷,自己寫也可以
dim Intoarr as new Intoarray
dim result as As Double(, ) =intoarr.sqlinput()
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/22819.html
標籤:VB.NET
