【问题标题】:; expected line 9 column 45;预计第 9 行第 45 列
【发布时间】:2017-05-15 06:32:49
【问题描述】:

我正在通过预先编写的项目开发应用程序。在构建解决方案时出现此错误:

;预计在第 9 行第 45 列

VS IDE 为第 9 行的“=>”添加了红色下划线。

我使用的是 Visual Studio 2008。我不明白问题出在哪里。

这是我的代码:

    using System;
    using System.Net;
    using Newtonsoft.Json.Linq;

    namespace Main.Tools
    {
        internal static class Blockr
        {
            private static string BlockrAddress => "http://btc.blockr.io/api/v1/";
            internal static double GetPrice()
            {
                var request = BlockrAddress + "coin/info/";
            var client = new WebClient();
            var result = client.DownloadString(request);

            var json = JObject.Parse(result);
            var status = json["status"];
            if ((status != null && status.ToString() == "error"))
            {
                throw new Exception(json.ToString());
            }

            return json["data"]["markets"]["coinbase"].Value<double>("value");
        }

        internal static double GetBalanceBtc(string address)
        {
            var request = BlockrAddress + "address/balance/" + address;
            var client = new WebClient();
            var result = client.DownloadString(request);

            var json = JObject.Parse(result);
            var status = json["status"];
            if ((status != null && status.ToString() == "error"))
            {
                throw new Exception(json.ToString());
            }

            return json["data"].Value<double>("balance");
            }
        }
    }

【问题讨论】:

  • 删除第9行等号后的&gt;
  • @ClaudioP 虽然它可以编译,但现在它变成了一个可变字段,而不是像以前那样的不可变属性
  • @Rob A readonly 关键字将是相同的。还是我错了?
  • @ClaudioP 它会更接近,但如果要使用反射,它仍然会中断,并且需要一个属性而不是字符串

标签: c# visual-studio


【解决方案1】:

在第 9 行你有

private static string BlockrAddress => "http://btc.blockr.io/api/v1/";

这种类型的属性定义是 c# 6 的特性,在 vs 2008 中不受支持。将其更改为

private static string BlockrAddress {
    get { return "http://btc.blockr.io/api/v1/"; }
}

【讨论】:

    【解决方案2】:

    这是 C#6 语法 (expression bodied member),仅自 Visual Studio 2015 起可用:

    private static string BlockrAddress => "http://btc.blockr.io/api/v1/";
    

    将其更改为:

    private static string BlockrAddress get { return "http://btc.blockr.io/api/v1/" }; //property
    

    private static readonly string BlockrAddress = "http://btc.blockr.io/api/v1/"; //field
    

    应该能解决问题

    【讨论】:

      【解决方案3】:

      只需输入private static string BlockrAddress = "http://btc.blockr.io/api/v1/"; 而不是private static string BlockrAddress =&gt; "http://btc.blockr.io/api/v1/";

      【讨论】:

      • @PraveenYadav fyi,这将原始代码的含义从只读属性更改为可变字段
      • 是的,这确实应该考虑,因为它改变了以前的行为
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-04-29
      • 2013-05-06
      • 1970-01-01
      • 1970-01-01
      • 2019-08-09
      • 2015-06-30
      • 2016-01-09
      相关资源
      最近更新 更多