【问题标题】:How can I convert a var type to int?如何将 var 类型转换为 int?
【发布时间】:2013-12-04 12:14:37
【问题描述】:

从下面,我在我的代码中得到一个 var 类型变量:

var FormID = from n in dtEnDate.AsEnumerable()
             where n.Field<int>("Tax_Setup_UID") ==
                   Convert.ToInt32(item.GetDataKeyValue("Tax_Setup_UID"))
             select n.Field<string>("FormID");

这给了我强大的力量。现在我想将此 var 类型变量转换为 int 以供下次使用,如果我尝试不进行转换,则会出现错误。但我做不到。

【问题讨论】:

  • 表示我不能这样做吗?
  • 看来你不明白var 做了什么。请先阅读文档..
  • @wudzik,您链接的文章的第一句话指出“在方法范围内声明的变量具有隐式类型 var”。此外,由于编译器会推断类型,因此将其转换为其他类型的问题似乎并非不合理。

标签: c# asp.net var


【解决方案1】:

您将返回select n.Field&lt;string&gt;("FormID"),因此var FormID 的实际类型将是IEnumerable&lt;string&gt;

如果您知道查询将返回一个结果,您可以执行以下操作:

int formID = int.Parse(FormID.First());

如果FormID 是您数据库中的int,请将n.Field&lt;string&gt; 更改为n.Field&lt;int&gt;,您可以省略int.Parse()

【讨论】:

  • 它正在工作,谢谢,这个问题有答案,但为什么所有人都反对我?
  • 可能是因为一些自助和展示你所尝试的东西是值得赞赏的。如果您在显示的代码之后放置了一个断点,您可以检查FormID 的内容并提出更准确的问题,甚至自己解决。 :)
  • 我看到了内容,它也向我展示了价值,但当时我无法使用它,无论如何感谢您的最佳答案。
【解决方案2】:

首先,正如已经指出的那样,var 不是它自己的类型。相反,它将采用分配给它的值的类型。您可以通过在 Visual Studio 中将鼠标悬停在其上来查看其类型。

你应该发现在这个实例中它的类型是IEnumerable&lt;string&gt;

所以你需要做的第一件事就是得到你想要的物品。假设您只期望一个结果,那么您可以这样做:

var item = FormID.First();//FormID is probably not a good choice for this variable name

然后您可以将您的string 转换为int,如下所示:

int i = int.Parse(item);

int i = Convert.ToInt32(item);

【讨论】:

    【解决方案3】:

    首先,var 不是类型,它只是“任何类型,编译器必须找出哪个类型”的简写。

    其次,您的代码将字段“FormID”返回为string,而不是int,因此您的变量FormID 将是IEnumerable&lt;string&gt;

    如果FormID 实际上是DataTable 中的int,则只是select n.Field&lt;int&gt;("FormID");,否则,您必须将string 转换为int,例如选择Convert.ToInt32(n.Field&lt;string&gt;("FormID"))

    【讨论】:

      【解决方案4】:

      要记住的一点是,在将值存储到 var 之前,将鼠标悬停在调用函数上并检查它实际返回的内容。它会让您准确/清晰地了解将返回值存储在哪里,以及是否有任何直接转换可用[i.e. Convert.ToInt32 and TryParse etc. when returned type is object or .First/Last in case of Enumerable]。这样,您就可以免受后续步骤中的转换黑客攻击。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-03-12
        • 2016-03-20
        • 2014-09-02
        • 2018-02-11
        • 1970-01-01
        • 1970-01-01
        • 2017-04-17
        • 2020-10-22
        相关资源
        最近更新 更多