返回类型的说明
本文关键字:说明 返回类型 | 更新日期: 2023-09-27 17:56:49
我不明白返回类型...我是一名 VB 开发人员。它是否返回一些数组???
[System.Web.Services.WebMethod]
[System.Web.Script.Services.ScriptMethod]
public static object GetUploadStatus()
{
//Get the length of the file on disk and divide that by the length of the stream
UploadDetail info = (UploadDetail)HttpContext.Current.Session["UploadDetail"];
if (info != null && info.IsReady)
{
int soFar = info.UploadedLength;
int total = info.ContentLength;
int percentComplete = (int)Math.Ceiling((double)soFar / (double)total * 100);
string message = "Uploading...";
string fileName = string.Format("{0}", info.FileName);
string downloadBytes = string.Format("{0} of {1} Bytes", soFar, total);
return new {
percentComplete = percentComplete,
message = message,
fileName = fileName,
downloadBytes = downloadBytes};
}
//Not ready yet
return null;
}
谢谢
它返回一个匿名类型(VB.NET 引用)。它是没有相应类的类型。
Visual Basic 支持匿名类型,这使您无需为数据类型编写类定义即可创建对象。相反,编译器会为您生成一个类。该类没有可用的名称,直接从 Object 继承,并包含在声明对象时指定的属性。由于未指定数据类型的名称,因此将其称为匿名类型。
不,它返回匿名类型。
您返回的是匿名类型。
这基本上就像动态创建一个类。
公式标记左侧的每个值都是一个属性名称。
这将返回具有以下属性的匿名类型(不是数组):percentComplete、message、fileName 和 downloadBytes。
转换为VB可能会
帮助您:
<System.Web.Services.WebMethod> _
<System.Web.Script.Services.ScriptMethod> _
Public Shared Function GetUploadStatus() As Object
Dim info As UploadDetail = DirectCast(HttpContext.Current.Session("UploadDetail"), UploadDetail)
If info IsNot Nothing AndAlso info.IsReady Then
Dim soFar As Integer = info.UploadedLength
Dim total As Integer = info.ContentLength
Dim percentComplete As Integer = CInt(Math.Ceiling(CDbl(soFar) / CDbl(total) * 100))
Dim message As String = "Uploading..."
Dim fileName As String = String.Format("{0}", info.FileName)
Dim downloadBytes As String = String.Format("{0} of {1} Bytes", soFar, total)
Return New With { _
Key .percentComplete = percentComplete, _
Key .message = message, _
Key .fileName = fileName, _
Key .downloadBytes = downloadBytes _
}
End If
Return Nothing
End Function
看起来它正在返回一个匿名实例,该实例具有属性 percentComplete、message、fileName 和 downloadBytes 。调用方必须使用反射来访问属性(或在 .NET 4 中使用dynamic
关键字)。
更简单的做法是创建一个具有这些属性的类,并返回该类型的实例而不是匿名类型,以避免使用反射。
它返回一个具有一些命名属性的对象。如果//Not ready yet
,则为 null