小编PVi*_*itt的帖子

比较两个指针

我最近遇到了如何比较Fortran中的两个指针的问题.在C中,可以比较两个指针(pA == pB)(带pApB指针),因为它们只是地址.但是fortran指针不仅仅是纯内存地址.代码if(pa.ne.pb)(带有papb是同一类型的指针)给了我一个错误

比较运算符'.ne.'的操作数 at(1)是TYPE(sometype)/ TYPE(sometype)

其中sometype是指针指向的类型.

有没有办法比较两个指针是否指向同一个目标?或者我是否必须为.ne.指向的类型创建一个-operator?

fortran pointers fortran90

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

棱镜应用中的异常处理策略

我们的应用程序中有几个模块.我有一个项目,其中包含一组用于模块的自定义用户控件.请注意,此用户控件不会注入模块,而是用作XAML内联中的用户控件.

现在,用户控件可以在加载时抛出异常.我想在模块级别处理异常.我的想法是将一个eventaggregator注入模块构造函数,并在捕获异常时触发错误事件.

例如,模块的主视图如下

XAML

<inf:DockBase 
    x:Class="MainView" 
    xmlns:inf="clr-namespace:Infrastructure"
    xmlns:usercontrols="clr-namespace:UserControls;assembly=Myusercontrollib">

    <Grid>
        <!--some code here-->
        <usercontrols:CustomListControl source={Binding myList}/>
    </Grid>
</inf:DockBase>
Run Code Online (Sandbox Code Playgroud)

代码背后

public MainView()           
{
    InitializeComponent();         
}

public MainView(MainViewViewModel viewmodel, IEventAggregator eventAggregator)
    :this()  
{
    _eventAggregator = eventAggregator;  
}
Run Code Online (Sandbox Code Playgroud)

我在哪里可以从模块级别的用户控件中捕获激活?

c# wpf user-controls prism exception

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

返回内置类型的const值

返回内置类型的const值是一个很好的习惯吗?

原因是:

const int F()
{
}

int y;
F(x) = y;
Run Code Online (Sandbox Code Playgroud)

如果返回值为const,则上述代码将无法编译.但如果不是,F(x) = y;则是一个非常隐蔽的错误.

由于没有意义为函数赋值,我认为总是为内置类型返回一个const值是一个很好的习惯吗?如果我总是返回内置类型的const值,有什么问题吗?

c++ const

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

nullify(pointer)和指针之间的区别=&gt; null()

之间有什么区别

procedure(some_routine), pointer :: ptr
ptr => null()
Run Code Online (Sandbox Code Playgroud)

procedure(some_routine), pointer :: ptr
nullify(ptr)
Run Code Online (Sandbox Code Playgroud)

无效会在幕后做些什么吗?还是只是做同一件事的两种不同方式?

null fortran pointers

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

基本的多线程

我有以下面试问题:

class someClass
{
    int sum=0;
    public void foo()
    {
        for(int i=0; i<100; i++)
        {
            sum++
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

有两个并行线程在foo方法中运行.最后总和的价值从100到200不等.问题是为什么.据我所知,只有一个线程获得一个CPU,并且线程在运行时被抢占.在什么时候干扰会导致总和达不到200?

multithreading preemption

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

在C#中传递List <int>的问题

我有以下方法来计算列表中的前20个数字并返回它们.

static public List<int> CalculateTop20(List<int> nums)
{
    List<int> Returned = new List<int>();

    int count = nums.Count;

    for (int j = 0; j < 20; j++)
    {
        var most = (from i in nums
                    group i by i into grp
                    orderby grp.Count() descending
                    select grp.Key).First();

        Returned.Add(most);
        nums.RemoveAll(item => item == most);
    }
    return Returned;
}
Run Code Online (Sandbox Code Playgroud)

除非我将它们返回到main并尝试将它们输出到控制台,它们只是出现:System.Collections.Generic.List'1 [System.Int32] ...

我有多个其他方法在整个程序中传递列表,但这是唯一一个给我这个问题的方法.此外,当我在计算它们的同时输出它们时,数字是正确的.

c# list

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

使用 Skype4ComLib 时出错

嗨,我正在使用 Skype4ComLib 检索 Skype 联系人,但出现错误:

由于以下错误,检索具有 CLSID {830690FC-BF2F-47A6-AC2D-330BCB402664} 的组件的 COM 类工厂失败:80040154 类未注册(来自 HRESULT 的异常:0x80040154 (REGDB_E_CLASSNOTREG)。

我的机器上安装了 Skype。

任何的想法?

.net c# skype4com

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

在C#中关闭lambda表达式

我有这种功能.

function SomeFunction()
{

    const int NUMBER_OF_CONCURENT_THREADS = 50;

    List<Guid> sessions = new List<Guid>();

    ManualResetEvent[] doneEvents = new ManualResetEvent[NUMBER_OF_CONCURENT_THREADS];

    Action<int> makeServiceCall = (iter) =>
    {
        var proxy = GetProxy();
        sessions.Add(proxy.GetCurrentSessionId());

        doneEvents[iter].Set();
    };

    for (int i = 0; i < NUMBER_OF_CONCURENT_THREADS; ++i)
    {
        doneEvents[i] = new ManualResetEvent(false);                

        ThreadPool.QueueUserWorkItem((o) => 
        {
            int iter = i;
            makeServiceCall(iter);
        });
    }

    WaitHandle.WaitAll(doneEvents);

    Assert.AreEqual(50, sessions.Count);
}
Run Code Online (Sandbox Code Playgroud)

问题是我IndexOutOfRangeExceptiondoneEvents[iter].Set();代码行时得到了.请问,任何想法如何解决?

c# lambda closures

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

如何临时恢复旧版源代码?

我需要能够恢复旧版本的源代码,对其进行一些工作(生成丢失的.exe文件),然后像现在一样放回源代码.

我如何使用Mercurial?

Mercurial项目包括旧版本和当前版本.

注意对于标记我的人,请告诉我原因.在发布之前,我查找了有关此主题的其他问题.其他人似乎在解决永久性的恢复,我的是临时恢复.如果你让我失望,因为我不知道答案 - 这就是我问这个问题的原因!

mercurial

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

为什么Fortran指针总是可变的

我刚刚开始在Fortran中使用指针,最近偶然发现,Fortran中的指针不能保持不变.这意味着,这样的事情是不可能的:

procedure(proc_type), pointer, parameter :: fPtr => myFunc
Run Code Online (Sandbox Code Playgroud)

我试图找出为什么这是不可能的原因.但我发现的唯一一件事就是"现代Fortran解释":

另请注意,常量可能不是指针[..],因为它们始终是变量.

但这并不能解释背后的原因.有谁知道这个?

fortran pointers constants

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