我有这个VB方法,我转换为C#
Public Function GetToricData(ByRef SaveFileName As String) As ToricDataType
Dim filenumber As Short
Dim InString As String = ""
filenumber = FreeFile()
If System.IO.File.Exists(SaveFileName) Then
With GetToricData
FileOpen(filenumber, SaveFileName, OpenMode.Input)
Input(filenumber, InString)
If IsNumeric(InString) Then
.ToricAppDiam = Convert.ToDouble(InString)
End If
Input(filenumber, InString)
If IsNumeric(InString) Then
.NumToricOpticZones = Convert.ToInt16(InString)
End If
FileClose(filenumber)
End With
Else
With GetToricData
.NumToricOpticZones = 20
.ToricAppDiam = 3
End With
SaveToricData(SaveFileName, GetToricData)
End If
End Function
使用Telerik Online Converter将转换后的C#转换为C#
public static FrontEndStructures.ToricDataType GetToricData(ref string SaveFileName)
{
var title = ((AssemblyTitleAttribute)System.Reflection.Assembly.GetExecutingAssembly().GetCustomAttributes(typeof(AssemblyTitleAttribute), false)[0]).Title;
FrontEndStructures.ToricDataType functionReturnValue = default(FrontEndStructures.ToricDataType);
//FrontEndStructures.ToricDataType functionReturnValue = new FrontEndStructures.ToricDataType();
int filenumber = 0;
string InString = "";
filenumber = FileSystem.FreeFile();
if (System.IO.File.Exists(SaveFileName))
{
var _with38 = functionReturnValue;
FileSystem.FileOpen(filenumber, SaveFileName, OpenMode.Input);
FileSystem.Input(filenumber,ref InString);
if (Information.IsNumeric(InString))
{
_with38.ToricAppDiam = Convert.ToDouble(InString);
}
FileSystem.Input(filenumber,ref InString);
if (Information.IsNumeric(InString))
{
_with38.NumToricOpticZones = Convert.ToInt16(InString);
}
FileSystem.FileClose(filenumber);
}
else
{
var _with39 = functionReturnValue;
_with39.NumToricOpticZones = 20;
_with39.ToricAppDiam = 3;
SaveToricData(ref SaveFileName, ref _with39);
}
return functionReturnValue;
}
ToricDataType定义为
public struct ToricDataType
{
public double ToricAppDiam;
public short NumToricOpticZones;
}
我想知道这条线的意义是什么
FrontEndStructures.ToricDataType函数返回值=默认值(FrontEndStructures.ToricDataType);
为什么在线工具使用Default关键字,为什么不能使用new关键字?由于类是结构类型,而结构是值类型,因此在哪里分配内存(堆栈或堆)以及如何初始化数据成员?
我期待对此进行详细说明,并想知道使用new 运算符将帮助我达到相同的目的还是没有?
C#null
与VB不太相同Nothing
。在VB中,Nothing
表示类型的默认值。对于为空引用的引用类型以及对于值为其所有字段均设置为默认值的值的值类型。在C#中,null
表示对引用类型的空引用,但不能用于初始化值类型。该default
运营商确实为值类型提供一个默认值相当于工作。
还要注意,与VB不同,C#函数没有默认返回值。在VB中,您可以分配给以该函数命名的隐式局部变量,如果未Return
命中任何显式语句,则将返回该值。在C#中,您必须显式返回某些内容,因此需要返回其他局部变量。我真的建议无论如何不要在VB中使用该隐式返回。明确的回报使您的代码更清晰。
编辑:您可以使用new
关键字创建一个新实例,并具有相同的效果。您必须使用的一种情况default
是,当您传递的类型是通用类型参数时,在这种情况下,您通常将不知道它是引用类型还是值类型。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句