【问题标题】:How to convert type var into type string如何将 var 类型转换为 string 类型
【发布时间】:2016-03-20 18:19:17
【问题描述】:

这是我的代码,

 var getURL = tc.provideCreden("location/", "42.3", "-71.06");

这给出了一个var 值。我想将其转换为 string 以与我的另一种方法一起使用。

也就是说,

var getReviews = getRe("this is a string");

我想使用getURL 值作为这个字符串。我该怎么做?

这是我的第一个方法provideCreden()

  public dynamic provideCreden(string subUrl, string Latitude, string Longitude)
        {
            string fullURl = BaseUrl + subUrl + apiKey;
            WebClient tripClient = new WebClient();
            var finalResult = tripClient.DownloadString(fullURl);

            RootObject obj = JsonConvert.DeserializeObject<RootObject>(finalResult);
            var final = obj.Data
                        .Where(s => s.latitude == Latitude && s.longitude == Longitude)
                        .Select(n => n.Apidetailurl);

            return final;
        }

这个方法返回 http://api.somevalue.com/api/partner/2.0/localized/ 这个。然后当我使用 ToString() 转换它时,它会给出 System.Linq.Enumerable+WhereSelectListIterator`2[some.Item,System.String]

所以我想要这个 http://api.somevalue.com/api/partner/2.0/localized/ 作为值。因为我想在另一种方法中使用它。

【问题讨论】:

  • 你可以使用.ToString()
  • 仅供参考,没有“type var”之类的东西。 var 不是类型。 var 只是要求编译器为您推断类型。在您的示例中,我们不知道 getURL 是什么,因此尽管以下推荐 ToString() 的答案可能是正确的,但这绝对不是正确的方法。
  • var 不是类型,也不是一个神奇的词。这只是告诉编译器根据provideCreden的返回类型隐式选择类型的一种方式。 provideCreden 是什么,它是什么类型的?显示它的定义。
  • provideCreden 返回一个字符串(url),然后我想在另一个带有字符串参数的方法中使用该字符串(url)。ToString 的行为不是我想要的。这就是我问的原因跨度>
  • 当我使用 var 时,它会给出 http://api.somename.com/api/partner/2.0/location/ 这个网址。但是当我使用 ToString() 时,它给出了System.Linq.Enumerable+WhereSelectListIterator2[somename.Item,System.String]`

标签: c# string type-conversion var


【解决方案1】:
var MyVar = "love";
string MyString = MyVar.ToString();

【讨论】:

  • 尽量避免只有代码的答案,它们实际上并不能帮助提供有关问题解决方案的信息。也许添加一个关于所有对象都可以访问 ToString 的花絮和一个文档链接来支持它,而不是仅仅显示这个例子?
【解决方案2】:

您的方法返回IEnumerable&lt;TResult&gt;,我怀疑它是String 类型的TResult。 但是,您的返回类型是 dynamic 类型,因此最好将动态更改为它返回的任何类型,例如 public IEnumerable&lt;String&gt; provideCreden(string subUrl, string Latitude, string Longitude) 。然后你可以这样做:

 var getURL = tc.provideCreden("location/", "42.3", "-71.06").FirstOrDefault();

//check the getURL. If of type String no conversion needed.
var getReviews = getRe(getURL);
//If not try 
var getReviews = getRe(getURL.ToString());

我希望这会有所帮助。顺便说一句,请检查 getURL 是否为空。

【讨论】:

  • 感谢您的尝试,但这不起作用。'object' does not contain a definition for 'FirstOrDefault'
  • 哦是的..它的动态... Apidetailurl 的类型是什么??
  • 它从数据库中获取。当我放一个断点并查看时。它看起来像这样http://api.someurl.com/api/partner/2.0/loction/8
  • 如果您将签名更改为 public IEnumerable provideCreden(string subUrl, string Latitude, string Longitude) ...这行得通吗?我知道我会在这里失明,但看起来它只是字符串的 IEnumerable...
【解决方案3】:

您可以使用Convert.ToString(getURL);。如果您的("location/", "42.3", "-71.06") sn-p 返回null,这也会处理。

【讨论】:

    猜你喜欢
    • 2014-09-02
    • 1970-01-01
    • 2022-11-21
    • 1970-01-01
    • 1970-01-01
    • 2019-12-02
    • 2017-01-29
    • 2016-05-20
    • 1970-01-01
    相关资源
    最近更新 更多