【问题标题】:Creating a Method in C#在 C# 中创建方法
【发布时间】:2021-07-14 11:20:46
【问题描述】:

我正在创建我的第一个方法。到目前为止,它看起来还不错。但是,有一个错误。

我的方法:

public string ConvertNameToID(string name)
        {
            var filename = "./XML/sus.xml";
            var currentDirectory = Directory.GetCurrentDirectory();
            var susFilepath = Path.Combine(currentDirectory, filename);

            XElement xelement = XElement.Load(susFilepath);
            IEnumerable<XElement> msus = xelement.Elements();

            var SuSid = from sus in msus
                        where sus.Element("NAME").Value == name
                        select sus;

            foreach (var sus in SuSid)
            {
               SuSID = sus.Element("ID").Value;
            }
            return SuSID;
        }

错误是:

The name 'SuSID' does not exist in the current context

【问题讨论】:

  • c# 区分大小写,foreach 循环是非语义的。可能你不会.. return SuSid.First(p=>p.Element("ID").Value)

标签: c# methods


【解决方案1】:

错字:“SuSid”是你的变量

编辑:对不起,这是错误的。您之前没有声明 SuSID:(Type) SuSID = null 例如 string SuSID = null 如果它是一个字符串。

【讨论】:

  • 完美,这就是解决方案!
  • @Sascha 如果是这样,请考虑用绿色复选标记标记此答案。
【解决方案2】:

SuSID 等于 SuSid?如果 C# 区分大小写,它可能会理解 SuSID 与 SuSid 不同。尝试改变它,看看它是否有效。

【讨论】:

    【解决方案3】:
    foreach (var sus in SuSid)
    {
        // In order to use `SuSID` which is distinct from `SuSid`, 
        // you need to declare it first.
        SuSID = sus.Element("ID").Value;
    }
    return SuSID; // To return `SuSID` here, it must be accessible in this context
                  // which means: you need to declare it outside of `foreach`.
    
    

    所以,要让这个“工作”你需要做

    string SuSID = null;
    foreach ...
    

    但这有意义吗? - 我认为不会,因为您将返回的只是 foreach 迭代中的 最后一个值

    如果这是你真正想要的,你可以这样做

    return msus.LastOrDefault(sus => sus.Element("NAME").Value == name)?.Element("ID")?.Value; 
    // add `?? ""` maybe,  if you want to return "" as "not found";
    

    见:Enumerable.LastOrDefault Method

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-18
      • 2013-04-10
      相关资源
      最近更新 更多