You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C#调用ContainsDuplicate函数报当前上下文不存在错误问题咨询

问题原因

  • 方法归属问题:ContainsDuplicate 是定义在 solution 类中的实例成员,不属于Main方法所在的类,也没有被标记为静态,无法在Main中直接通过方法名调用
  • 方法逻辑错误:HashSet.Add() 方法的返回值规则是元素不存在、添加成功时返回true,元素已存在、添加失败时返回false,你当前的逻辑会导致第一个元素插入成功就直接返回true,和「判断是否存在重复元素」的需求完全相反

修复方案

方案1:修改为静态方法直接调用

把solution类和对应方法改为静态,即可直接通过类名调用,同时修正逻辑问题:

static void Main(string[] args)
{
    var result = Solution.ContainsDuplicate(new int[] { 1, 2, 3, 4, 5, 1 });
    Console.WriteLine(result);
}

// 类名建议遵循C#帕斯卡命名规范改为大写开头的Solution
public static class Solution {
    // 方法改为静态成员
    public static bool ContainsDuplicate(int[] nums)
    {
        var hash = new HashSet<int>();
        foreach (var i in nums)
        {
            // 逻辑修正:添加失败说明元素已存在,返回true
            if (!hash.Add(i)) return true;
        }
        return false;
    }
}

方案2:实例化类后调用实例方法

不需要修改静态属性,先创建solution类的实例再调用方法即可:

static void Main(string[] args)
{
    // 先实例化solution类
    var sol = new solution();
    var result = sol.ContainsDuplicate(new int[] { 1, 2, 3, 4, 5, 1 });
    Console.WriteLine(result);
}

public class solution {
    public bool ContainsDuplicate(int[] nums)
    {
        var hash = new HashSet<int>();
        foreach (var i in nums)
        {
            if (!hash.Add(i)) return true;
        }
        return false;
    }
}

内容的提问来源于stack exchange,提问作者inanimateobject07

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 17:36:03