将vb DirectCast转换为c#

将vb DirectCast转换为c#,c#,C#,我正在将一个vb项目转换为c# 除了这一行外,一切正常: information = DirectCast(jsonserializer.Deserialize(jsonString, GetType(List(Of formData))), List(Of formData)) 我创建了一个与vb相同的类(formData),json字符串与vb相同 public class formData { private string part; private string

我正在将一个vb项目转换为c#
除了这一行外,一切正常:

information = DirectCast(jsonserializer.Deserialize(jsonString, GetType(List(Of formData))), List(Of formData))
我创建了一个与vb相同的类(formData),json字符串与vb相同

    public class formData
{
    private string part;
    private string key;
    private string val;
    public formData(string part, string key, string val)
    {
        this.part = part;
        this.key = key;
        this.val = val;
    }

    public string Part
    {
        get { return part; }
        set { part = value; }
    }

    public string Key
    {
        get { return key; }
        set { key = value; }
    }

    public string Value
    {
        get { return val; }
        set { val = value; }
    }
}
我该怎么办?

我必须使用“”

VB中的Directcast与C#中的类型转换相同

因此,我相信您的代码将如下所示:

var jsonserializer = new JavaScriptSerializer();
var information = jsonserializer.Deserialize(jsonString, typeof(List<formData>)) as List<formData>;
var jsonserializer=newJavaScriptSerializer();
var information=jsonserializer。将(jsonString,typeof(List))反序列化为列表;

var jsonserializer=newJavaScriptSerializer();
var information=(List)jsonserializer.Deserialize(jsonString,typeof(List));
两者之间的区别在于,如果强制转换失败,前者将返回null,而后者将抛出异常。铸造为类型和
as
之间有很大的讨论,因此:


VB中的Directcast与C#中的强制类型转换相同

因此,我相信您的代码将如下所示:

var jsonserializer = new JavaScriptSerializer();
var information = jsonserializer.Deserialize(jsonString, typeof(List<formData>)) as List<formData>;
var jsonserializer=newJavaScriptSerializer();
var information=jsonserializer。将(jsonString,typeof(List))反序列化为列表;

var jsonserializer=newJavaScriptSerializer();
var information=(List)jsonserializer.Deserialize(jsonString,typeof(List));
两者之间的区别在于,如果强制转换失败,前者将返回null,而后者将抛出异常。铸造为类型和
as
之间有很大的讨论,因此:


DirectCast可以转换为C#作为一个cast。也就是说:VB.NET中的DirectCast(myOjbect,myType)等于C#DirectCast中的myObject(myType),可以将其转换为C#ascast。也就是说:VB.NET中的DirectCast(myOjbect,myType)等于C#中的(myType)myObject,它应该类似于
information=(List)jsonserializer.Deserialize(jsonString,typeof(List))而且强制转换永远不会失败,因为反序列化程序知道反序列化到什么类型(我希望这句话有意义:-)您仍然需要将formData转换为列表,您正在强制转换为formData,原始代码强制转换为列表我自己进行了编辑以避免误解(希望您不介意,但无论如何都是一个bug…)谢谢大家:Erro名称“jsonserializer”在当前上下文中不存在,我使用:using System.Web.Script.Serialization;但我得到了这个错误。请提供帮助。它应该类似于
information=(List)jsonserializer.Deserialize(jsonString,typeof(List))而且强制转换永远不会失败,因为反序列化程序知道反序列化到什么类型(我希望这句话有意义:-)您仍然需要将formData转换为列表,您正在强制转换为formData,原始代码强制转换为列表我自己进行了编辑以避免误解(希望您不介意,但无论如何都是一个bug…)谢谢大家:Erro名称“jsonserializer”在当前上下文中不存在,我使用:using System.Web.Script.Serialization;但我得到了这个错误。请帮忙。