【问题标题】:return object from method in class从类中的方法返回对象
【发布时间】:2017-03-11 16:54:49
【问题描述】:

我有一个由 2 个类组成的代码。在class Program 中有一个方法名称calculate,它应该获取3 个字符串并返回一个对象:

namespace ConsoleApplication1
{
    public class DataGridObject
    {
        public string MainName { get; set; }
        public double Level { get; set; }
        public double Exp { get; set; }
        public double AmountNeed { get; set; }
        public double TotalLose { get; set; }
        public double TotalGain { get; set; }
        public double TotalCost { get; set; }
        public Uri ImageSource { get; set; }

    }

   public static class Program
    {

            public object calculate(string db_name, string sheetname, string images_path)
            {

            string DataBase_File = System.IO.Path.Combine(System.AppDomain.CurrentDomain.BaseDirectory.ToString(),     String.Format("{0}",db_name));
            string SheetName = string.Format("{0}$",sheetname);
            string Images_File = string.Format(@"{0}",images_path);

            ***//some code in between which reads url, parsing json and do some math on the data in order to store it in `var d`//*** 

            var L = new List<DataGridObject>();

            string[] filePaths = Directory.GetFiles(Images_File);

            for (int z = 0; z < list_Exp.Count; z++)
              {
                var d = new DataGridObject();

                d.MainName = ...;
                d.Level = ...;
                d.Exp = ...;
                d.AmountNeed = ...;
                d.TotalLose = ...;
                d.TotalGain = ....;
                d.TotalCost = ....;
                d.ImageSource = new Uri....;

                L.Add(d);

              }

            return L;

          }


//calling the method:

    string db_name = "DataBase.xlsx";
    string sheetname = "sheet1";
    string images_path = "C:\\Users...";

    object a = calculate(db_name, sheetname, images_path);

}

我得到的错误是在我调用方法的那一行:

“字段初始值设定项不能引用非静态字段、方法或属性Program.db_name”和其他 2 个(Program.sheetname、Program.images_path)相同

【问题讨论】:

  • 为什么方法参数之间有分号? “对象 a = 计算(字符串 db_name;字符串 sheetname;字符串 images_path);”
  • 您提供的错误与您向我们展示的代码不匹配,这一行肯定会产生与您向我们展示的错误不同的错误:calculate(string db_name, string sheetname, string images_path);。跨度>
  • @ben 我没有说它会解决问题。它不会像你之前展示的那样编译,只是没有意义。
  • 您需要将您的问题修改为MVCE,这是重现您所描述问题的最少代码量。目前,您的代码到处都有省略号、未闭合的部分,并且在任何情况下都不会产生您所描述的错误。
  • 阅读链接的 MVCE 帮助了吗?不要尝试零碎地“修复”您显示的代码。花时间创建一个最小完整的示例,然后在此处发布。

标签: c# object methods


【解决方案1】:

主要问题是您的函数calculate 不是static 函数,您可以尝试从static 函数调用它。因此,请将您的函数更改为 static,如下所示:

public static object calculate(string db_name, string sheetname, string images_path)

有关static字段和方法的更多详细信息,请查看this article

【讨论】:

  • 已更改,谢谢。现在错误出现在方法中的 3 个参数中 (Program.db_name,Program.sheetname,Program.iamges_path)
  • 您必须将变量更改为static
猜你喜欢
  • 2011-04-05
  • 1970-01-01
  • 2012-05-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多