小编gui*_*r80的帖子

将此传递给基础构造函数

我正在尝试为我正在编写的程序实现良好的设计模式。我有一个这样的班级结构。

abstract class SomeBase
{
     public SomeObject obj { get; protected set; } 

     protected SomeBase(SomeObject x)
     {
           obj = x;
     }

     //Other methods and fields...
}

public class SomeDerived : SomeBase
{

     public SomeDerived() : base(new SomeObject(this))
     {

     }

}
Run Code Online (Sandbox Code Playgroud)

现在我确定您知道,您不能在基本构造函数中传递 this,因为此时对象尚未初始化。无论如何,我真的希望有一个解决方法。允许SomeDerived()处理基类字段的设置对我来说不是最佳实践。我想将这个新对象向上传递。

c# constructor abstract-class base-class derived-class

8
推荐指数
2
解决办法
3361
查看次数

OpenCL Cloo:资源不足错误

在OpenCL中运行一些测试代码(使用Cloo C#)时,我开始从OpenCL中获取这些OutOfResource错误,有时Unity在我得到异常之前完全崩溃.我基本上使用不同数量的全局/本地工作项重复调用内核函数来检查时序.我保持参数相同,并以2x2x2全局和2x2x2本地调用内核,并且只检查有效大小.偶尔工作正常,但大多数时候它会完成大约30或40次Execute()调用,然后在下一次Execute()调用时崩溃.

注意:Execute是指计算机上的OpenCL.dll.由于本机代码,我假设堆栈跟踪Unity返回NULL.

任何人都知道是什么原因造成的?

注意:这个版本的Cloo是来自GitHub的Cloo-Unity,我在Unity中使用它.当我得到错误时调用的等效OpenCL函数是clEnqueueNDRangeKernel(),但它在Cloo中称为Execute().

代码示例:

//Setup inputs one time...
foreach (var input in p_inputs)
{
     inputs.Add(input.Function, input);
     profiles.Add(input.Function, new RunProfile(input.Function, input.Weight));
     input.Input.Prepare(package[input.Function]);
}


//Profile...
DateTime start;
int g_state = 0;
int l_state = 0;
long[] g = new long[3] { 2, 2, 2 };
long[] l = new long[3] { 2, 2, 2 };
while(g[0] * g[1] * g[2] < Device.MaxWorkGroupSize)
{
       l[0] = 2; l[1] = 2; l[2] = 2; l_state = 0; //Reset locals
       bool proceed = …
Run Code Online (Sandbox Code Playgroud)

c# exception opencl cloo

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

C#参考文献; 隐藏会员

想象一下,你有一个如下定义的类.

public class SomeClass
{
     public Manager m { get; protected set; }
     public SpecialData data { get; protected set; }

     //More methods and member code here...
}
Run Code Online (Sandbox Code Playgroud)

我需要我的经理类以某种方式能够更改SpecialData成员的集合引用.我可以使用C++中的双指针或朋友类来完成此操作,但遗憾的是,该选项在C#中不可用.如何保持SpecialData不受外部用户设置,同时仍允许Manager类控制设置?我可以用内部关键字做到这一点,但这似乎并不是非常安全或干净......

任何帮助是极大的赞赏.

c# oop friend double-pointer

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