小编rez*_*eza的帖子

有什么办法围绕C#中的循环引用依赖?

我有3个项目的解决方案

Project1 - main application
Project2 - graphing application
Project3 - graphing library
Run Code Online (Sandbox Code Playgroud)

从Project1中的对象访问数据.项目1引用项目2来创建数据(表单)的显示,而项目2引用项目3来实现渲染图形的实际繁重工作.

现在,项目3需要访问项目1的对象/方法,因为这是数据所在的位置.但是当我从项目3添加引用到项目1时,我收到有关循环引用的错误.

我该如何解决这个问题?

谢谢,Reza

c# circular-reference

1
推荐指数
1
解决办法
5922
查看次数

在c#中继承List <>并覆盖构造函数

我正在尝试在List周围创建一个包装器以执行我想要的一些特定事情,例如计算最大最小值,从某些元素中提取特定值等.

我开始

    public struct datum {
      public UInt32[] chan;
      public UInt64 sample_number;
      public UInt32 time;
      public UInt32 source_sector;
    } 

    public class dataSet : List<datum> {
     bool dirty=true;
     ....
    }
Run Code Online (Sandbox Code Playgroud)

这些方法通常是这样的(我想知道列表是否已被修改,因为我有一个max()/ min()函数,它只在修改数据时解析数据并缓存值,如果List没有被修改了)

     public new void Add(datum x ) {
        base.Add(x);
        this.dirty = true;
    }
Run Code Online (Sandbox Code Playgroud)

但是,我不确定如何创建构造函数.这种语法不起作用..我怎样才能得到这种行为?

    public dataSet(int count) {
        this = (dataSet) new List<datum>(count);
    }
Run Code Online (Sandbox Code Playgroud)

我也有这个构造函数,虽然未经测试,但似乎工作正常(没有编译错误)

    public dataSet(List<datum> data) {
        this.AddRange(data);
    }
Run Code Online (Sandbox Code Playgroud)

我遇到一个帖子,说你应该使用一个Collection,一个List用于速度.虽然我需要速度,但我不确定为什么收藏会更好?

--UPDATE--

我不想使用linq,因为你不能像这样有效地创建同时计算max/min的东西:

    public void recalculateMaxMin() {
        foreach (var d in data) {
            for (int i = 0; i …
Run Code Online (Sandbox Code Playgroud)

c# constructor list subclass

1
推荐指数
1
解决办法
898
查看次数

为什么我不能直接在C#中编辑List成员

我有一个类声明为public class DatumSet : List<datum>,在哪里

public struct datum {
    public UInt32[] chan;
    public UInt64 sample_number;
    public float time;
    public UInt32 source_sector;
}
Run Code Online (Sandbox Code Playgroud)

我想迭代列表并进行一些更改.为什么这不起作用

        for (int i = 0; i < this.Count; i++) {
            this[i].sample_number = startSample;
            this[i].time = (float)startSample / _sample_rate;
            startSample++;
        }
Run Code Online (Sandbox Code Playgroud)

但这确实有效

        for (int i = 0; i < this.Count; i++) {
            datum d = this[i];
            d.sample_number = sampleNumber;
            d.time = (float)sampleNumber / _sample_rate;
            sampleNumber++;
        }
Run Code Online (Sandbox Code Playgroud)

我收到错误:

无法修改'System.Collections.Generic.List.this [int]'的返回值,因为它不是变量

c# list

1
推荐指数
2
解决办法
143
查看次数

防止单例类的子类调用单例的构造函数

好吧,我有一个GraphMaster包含许多系统范围值的单例类.我有一个GraphObject : GraphMaster具有图形特定数据的子类.通过子类化,我可以访问全局类或子类的成员.通过使用单例类,我可以在任何地方更改全局变量,并将它们反映在所有子类中.

但是,我被卡住了,因为基类的构造函数想要调用单例类的构造函数,但它不能被标记为私有.

我该如何解决这个问题?我正在尝试做什么?由于对这篇文章的回应,我走了这条道路:我可以创建一个"全局"对象来存储多个对象的变量吗?

例如,

public class GraphMasterObject {
    private static GraphMasterObject instance;
    private GraphMasterObject() {   }
    }

    public static GraphMasterObject Instance {
        get {
            if (instance == null) instance = new GraphMasterObject();
            return instance;
        }
    }
    public int globalVar=10;
}

public class GraphObject : GraphMasterObject {

   public GraphObject() {
   }

   public int localVar=20;
}
Run Code Online (Sandbox Code Playgroud)

我希望能够做到

GraphObject go = new GraphObject();
go.globalVar <- this is 10
GraphMasterObject.Instance.globalVar = 20;
go.globalVar <- now this is …
Run Code Online (Sandbox Code Playgroud)

c# singleton subclass

0
推荐指数
1
解决办法
253
查看次数

标签 统计

c# ×4

list ×2

subclass ×2

circular-reference ×1

constructor ×1

singleton ×1