C# 中的堆栈溢出

2024-02-05

我有这个寄存器来注册我需要的所有对象:

public static class ObjectRegister
{
    public static List<IObject> RegisteredObjects = new List<IObject>();
    static ObjectRegister()
    {
        RegisteredObjects.Add(new Object1());
        RegisteredObjects.Add(new Object2());
        RegisteredObjects.Add(new Object3());
    }
}

接下来,我有一个检查列表的函数,如果列表中的项目通过测试,它会创建一个对象实例并将其添加到列表中:

public static List<IObject> Scan(List<parametar> list)
    {
        List<IObject> neededObjects = new List<IObject>();
        foreach (IObject registeredObject in ObjectRegister.RegisteredObjects)
        {
            foreach (parametar param in list)
            {
                if (registeredObject.Test(param)) //returns true or false 
                {
                    neededObjects.Add(registeredObject.CreateInstance(param));
                }
            }
        }
        return connectedObjects;
    }

以下是 Object1 的 CreateInstace 方法:

public IObject CreateInstance(parametar param)
    {
        return new Object1(param);
    }

这是构造函数:

public Object1(parametar newParam)
    {
        this.param = newParam;
    }

它不断在这一行抛出堆栈溢出异常:

this.param = newParam;

尝试了创建实例、默认构造函数、空对象等的所有可能性,但没有任何效果......有什么想法吗?

Thanx

编辑: Object1 类的代码:

public class Object1: IObject
{
    public parametar param
    {
        get { return this.param; }
        set { this.param = value; }
    }

    internal Object1() { }

    public Object1(parametar newParam)
    {
        this.param = newParam;
    }        


    public bool test(parametar param)
    {
        // I do the propper checking of the param here, and return the result
    }


    public IObject CreateInstance(parametar param)
    {
        return new Object1(param);
    }
} 

这是你的问题,在 Object1 中:

public parametar param { get { return this.param; } set { this.param = value; }

该属性递归地调用自身 - 这正是您遇到堆栈溢出的原因。不要那样做。相反,你可能either想要一个自动实现的属性:

public parameter param { get; set; }

或使用私有支持字段:

private parametar param;
public parametar Param { get { return param; } set { param = value; }

此外,我强烈建议您开始关注.NET 命名约定 http://msdn.microsoft.com/en-us/library/ms229045.aspx,并注意类型和成员名称的拼写。

所以你可能希望你的班级被称为Parameter- 虽然我个人至少会try使其更具描述性,例如QueryParameter或类似的东西。同样地Object1不完全是一个语义上有意义的名字 - 我希望它不是你的名字real code.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C# 中的堆栈溢出 的相关文章

  • 忽略父进程中的信号

    我正在尝试实现一个 shell 程序 我希望 shell 程序忽略 SIG INT ctrl c 但在我的程序中 子进程也会忽略 SIG INT 信号 但它不应该这样做 因为 exec 应该将子进程带到另一个程序 并且该程序默认情况下应该处
  • 使用 R.Net 版本 1.5.5 创建 REngine 实例

    我正在尝试创建一个 Hello World 示例R Language using R Net版本1 5 5 从 NuGet 加载 不幸的是 我见过的在线示例都不起作用 这就是我所做的 已安装Microsoft R Open 3 2 4 增强
  • C++ 中的反向迭代器和负跨步迭代器,在开始之前使用一个作为哨兵

    In 查看 C 反向迭代器的另一种方式 https devblogs microsoft com oldnewthing 20211112 00 p 105908雷蒙德 陈写道 C 语言的一个怪癖 你可以拥有一个指针 集合的 已过终点 但不
  • 在“delete this;”语句期间发生了什么?

    请考虑以下代码 class foo public foo foo void done delete this private int x 以下两个选项中发生了什么 并且有效吗 选项1 void main foo a new foo a gt
  • C#:如何确定坐标是否在美国大陆?

    我正在获取坐标 纬度 经度 我想检查这些坐标是否位于美国大陆 有没有一种简单的方法可以在 C 中实现 我可以将坐标转换为 MGRS 或 UTM 谢谢 哇哦 他们专门为你准备了 http econym org uk gmap states x
  • Makefile:如何正确包含头文件及其目录?

    我有以下 makefile CC g INC DIR StdCUtil CFLAGS c Wall I INC DIR DEPS split h all Lock o DBC o Trace o o cpp DEPS CC o lt CFL
  • 安全移动 C++ 对象

    我听到过一些警告 不要通过以下方式将对象运送到另一个内存位置memcpy 但不知道具体原因 除非它包含的成员做了依赖于内存位置的棘手事情 否则这应该是完全安全的 或者不是 编辑 预期的用例是像这样的数据结构vector 它存储对象 不是po
  • autofac 中的条件组件注册

    是否可以根据其他组件的状态有条件地注册组件 就像是 ContainerBuilder RegisterConditionally
  • Magento SOAP V2 API - 附加属性设置为空

    几个小时以来 我一直在尝试通过 SOAP V2 API 创建具有附加属性的产品 每当我打电话时就会添加该产品目录产品创建但我随请求发送的附加属性被设置为空 每当我不添加附加属性时 这两个属性都会设置为其默认值 因此我认为这些属性正在发送和接
  • 如何检查我的程序是否有数据通过管道传输到其中

    我正在编写一个应该通过标准输入读取输入的程序 所以我有以下结构 FILE fp stdin 但是 如果用户没有将任何内容通过管道传输到程序中 这就会挂起 我如何检查用户是否确实将数据通过管道传输到我的程序中 例如 gunzip c file
  • 如何将8字节的十六进制数输入到char数组中?

    我想生成以以下开头的十六进制数字序列07060504003020100 下一个数字是0f0e0d0c0b0a0908等等按这个顺序 当我使用unsigned long long int并输出数据的前4位 这意味着0被截断 它打印706050
  • 使用 itextSharp 5.3.3 对 Pdf 文档进行数字签名和验证

    我正在尝试使用 iTextSharp 5 3 3 在服务器 c 上进行数字签名和验证 pdf 文档 我使用 DigiSign 在线工具 生成了 Pfx 文件 然后使用 Windows 生成证书 cer 文件
  • 检查字符串中是否存在所有字符值

    我目前正在做这项任务 但我被困住了 目标是读取文件并查找文件中的字符串中是否存在这些字符值 我必须将文件中的字符串与作为参数放入的另一个字符串进行比较 但是 只要每个字符值位于文件中的字符串中 那么它就 匹配 示例 输入和输出 a out
  • 更改为通用接口对性能的影响

    我使用 Visual Studio 使用 C NET 开发应用程序 ReSharper 在我的方法原型中经常建议我用更通用的类型替换输入参数的类型 例如 如果我仅在方法主体中使用带有 foreach 的列表 则使用 List 和 IEnum
  • 通用 lambda 的数量

    可以通过访问非泛型 lambda 的数量来推断其数量operator template
  • 在运行时生成可执行文件

    好吧 所以我想知道如何创建一个程序 该程序创建第二个程序 就像大多数压缩程序如何创建自解压自可执行文件一样 但这不是我需要的 假设我有 2 个程序 每个都包含一个类 我将使用一个程序来修改类并用数据填充类 第二个文件将是一个也具有该类的程序
  • 以编程方式将 UserControl 从 ContentControl 移动到另一个 ContentControl

    在 WPF 应用程序中 我想在代码中将 UserControl 从 ContentControl 移动到另一个控件 myContentControl2 Content myUserControl 在这种情况下我得到一个错误 指定的元素已经是
  • GCC编译非常慢(文件大)

    我正在尝试编译一个大的 C 文件 专门用于 MATLAB mexing C 文件大约 20 MB 可用来自 GCC 错误跟踪器 https gcc gnu org bugzilla attachment cgi id 36632如果你想玩一
  • TransactionScope 在某些机器上自动升级到 MSDTC?

    在我们的项目中 我们使用 TransactionScope 来确保我们的数据访问层在事务中执行其操作 我们的目标是not要求在我们的最终用户的计算机上启用 MSDTC 服务 问题是 在我们一半的开发人员机器上 我们可以在禁用 MSDTC 的
  • 编写一个转储屏幕像素的 RDP 客户端

    我想在中实现 RDP 客户端C 它能够获取屏幕所有像素的颜色值并将它们转储到文件中 我知道这在概念上与 RDP 的工作方式不同 但我的应用程序需要它 我正在尝试利用freerdp https github com FreeRDP FreeR

随机推荐

  • html css Gif 动画

    我有一个 gif 播放一次动画 它不循环 我也不希望它循环 我有 2 张图片 1 png 和 1 gif 动画 我希望每次鼠标悬停在 png 图像上时 都会播放 gif 我的问题是 当我将鼠标位置设置在 png 图像上时 gif 会播放一次
  • 提交后更改提交按钮上的文本

    提交后可以更改提交按钮上的文本吗 例如 按钮上有 提交 一词 在用户提交表单后 按钮现在将显示 完成 如果是这样 是如何完成的 Thanks 如果您使用 AJAX 处理表单 则只需在成功回调中更改按钮文本即可 ajax https api
  • display:none 和 *ngIf = 'false' 之间有什么区别?

    The display none是CSS表 它将从 DOM 树中删除元素 这ngIf false 还从 DOM 树中删除元素 他们之间有什么区别 display none https developer mozilla org en US
  • 为什么 GCJ 找不到我导入的包中的类?

    我想将一个小型 Java 应用程序编译为 Windows 可执行文件 该应用程序非常小 只有一个主类 但它使用 Apache POI 当我编译它时 只要我将 POI Jar 放入类路径参数中 一切都会正常 但是当涉及到链接时 GCJ 无法解
  • ModelState.AddModelError - 未显示错误

    我想在控制器捕获异常后为电子邮件字段设置错误消息 catch EmailAlreadyExistsException emailAlreadyExistsException ModelState AddModelError Useracco
  • 使用 NSDateFormatter 生成 NSDate 产生 nil NSDate 值

    我正在尝试使用以下字符串生成日期 NSDateFormatter dateFormatter NSDateFormatter alloc init dateFormatter setDateFormat MMMM dd yyyy HH mm
  • Twitter bootstrap 缩略图在除 Chrome + Windows XP 之外的任何地方都无法正确对齐

    好的 我正在制作一个工作网站原型 但在使用缩略图作为 Twitter Bootstrap 的一部分时遇到了一个小障碍 我的问题很容易看出 并且适用于我测试过的每个浏览器but Chrome 20 0 1132 57 Official Bui
  • 定时器无法连接到pyqt5中的插槽

    我无法将计时器连接到 move 插槽timer timeout connect self move 这不起作用 但QtCore QTimer singleShot 50 self move 这只是一步 仅此而已 class Bullet Q
  • Symfony2:具有空值的实体表单字段

    我有一个表单定义 它使用迄今为止很棒的字段类型entity 随着选项query builder我选择我的值并显示它们 可悲的是 我需要展示一个null默认值 例如all 这是一个过滤器形式 我不喜欢choices的选项entity因为我有数
  • 以“会计”格式处理负数

    我有数据集 其负值用括号括起来 即 10 10 它是csv格式的 我该如何处理它以便R能够解释 10 as 10 谢谢 更新 我知道我可以通过替换来解决 as 消除 并使用as numeric之后 但是有没有更优雅的方法来解决这个问题 如果
  • 在 Txt 文件中查找字符串,删除整行

    我目前正在使用 node js 创建一个 IRC 机器人 该机器人允许用户将歌曲链接添加到数据库中 每次有人提交一首歌曲时 它都会添加到 shuffle txt 的新行中 如下所示 user1 The Beatles Yesterday y
  • expoClientID 去了哪里?

    我正在将 Facebook 登录添加到我的博览会应用程序中 它在文档 https docs expo dev guides authentication facebook进入我的expoClientId某处 问题是我不知道该把它放在哪里 我
  • 如何在 PHP 中绑定 SQL 变量?

    我想绑定变量而不是仅仅构建 SQL 字符串 无论如何要在 Php 中执行此操作吗 MySQL 或 PostgreSQL 的答案都会有帮助 Thanks 有例如PDO http docs php net pdo pdo 和准备好的语句 包括绑
  • 从布局 xml 文件旋转 ImageView 源

    我的布局中有这个 ImageView
  • Android 上的 flash.sensors.Accelerometer 在网络浏览器中

    加速度计UPDATE事件永远不会触发 但是isSupported当 Flash 应用程序在 Android Web 浏览器中运行时 返回 true 我怎样才能让它发挥作用 this accelerometer new Acceleromet
  • php/mysql 将行添加在一起以获得总计

    这是场景 我正在生成一份关于在特定时间段内需要缴纳会费的所有会员的报告 我成功选择每个数据库条目并将其显示为 html 表中的一行 问题是报告必须具有的总字段数 每个成员根据他们使用的服务支付不同的金额 因此我必须单独添加每个字段中的值以确
  • 服务器启动时的调用方法[重复]

    这个问题在这里已经有答案了 我试图在我的网络应用程序启动时调用一个方法 目的是启动一个计时器 以定义的时间间隔执行一些工作 当我的 jboss 7 1 Web 应用程序启动时 如何调用函数 helloworld 如果您想在 Web 应用程序
  • 如何使用 sqlalchemy-migrate 将列类型从字符变化更改为整数

    我正在使用 sqlalchemy migrate 来更改 Postgre SQL 数据库中表中的一列的类型 我使用的升级脚本是 cofing utf 8 from sqlalchemy import MetaData Table Colum
  • 如何将元标记设置为 部分中的第一个标记?

    我正在使用 JSF2 GlassFish 3 1 PrimeFaces 2 x 我在 IE9 上遇到奇怪的渲染问题 我应该能够通过插入以下内容来强制 IE9 呈现为 IE9 但问题是 它不起作用 因为 我被告知 元标记必须是该部分中的第一个
  • C# 中的堆栈溢出

    我有这个寄存器来注册我需要的所有对象 public static class ObjectRegister public static List