小编Def*_*ult的帖子

将整数转换为数组

我想将一个整数转换为数组,所以它看起来如下所示:

int number = 123456 ;
int array[7] ;
Run Code Online (Sandbox Code Playgroud)

结果:

array[0] = 1 
array[1] = 2
...
array[6] = 6
Run Code Online (Sandbox Code Playgroud)

c++ arrays integer

15
推荐指数
5
解决办法
6万
查看次数

以异步方式打开第二个winform,但仍然表现为父表单的子项?

我正在创建一个应用程序,我想实现一个进程窗口,该窗口在进行冗长的过程时出现.

我已经创建了一个标准的Windows窗体项目,我使用默认窗体创建了我的应用程序.我还创建了一个新表单作为进度窗口.

使用以下命令打开进度窗口(在函数中)时出现问题:

ProgressWindow.ShowDialog();
Run Code Online (Sandbox Code Playgroud)

遇到这个命令时,焦点在进度窗口上,我认为它现在是正在为事件处理主循环的窗口.缺点是它阻止了我在主窗体中执行冗长的操作.

如果我使用以下命令打开进度窗口:

ProgressWindow.Show();
Run Code Online (Sandbox Code Playgroud)

然后窗口正确打开,现在不会阻止主窗体的执行,但它不会作为子窗口(模态)窗口,即允许选择主窗体,不以父窗口为中心等. .

我有什么想法可以打开一个新窗口,但继续在主窗体中处理?

c# winforms

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

内联的目的是什么?

我与Johannes Schaub就关键字进行了讨论.那里的代码是这样的:inline

namespace ... {
    static void someFunction() {
        MYCLASS::GetInstance()->someFunction();
    }
};
Run Code Online (Sandbox Code Playgroud)

他说:

将其作为内联函数可以在可执行文件中保存代码大小

但根据我在这里这里的发现,不需要,因为:

  • [内联]仅在编译器的成本/收益分析显示为有利可图时才会出现
  • 主流C++编译器(如Microsoft Visual C++和GCC)支持一个选项,允许编译器自动内联任何合适的函数,甚至那些未标记为内联函数的函数.

然而,约翰内斯表示明确指定它还有其他好处.不幸的是我不理解他们.例如,他说,"内联"允许您在程序中多次定义函数.,我很难理解(并找到参考).

所以

  1. 是否inline只是编译器的建议?
  2. 当你有一个小功能时我是否应该明确说明(我猜1-4指令?)
  3. 写作有什么其他好处inline
  4. 是否需要声明inline以减少可执行文件的大小,即使编译器(根据维基百科[我知道,错误的引用])应该自己找到这样的函数?

还有什么我想念的吗?

c++ compiler-construction inline

15
推荐指数
2
解决办法
1663
查看次数

从bigint将列的数据类型更改为uniqueidentifier

我想更改sql server中表的列的数据类型.我使用了以下声明:

ALTER TABLE dbo.tbltest  
ALTER COLUMN ID uniqueidentifier
Run Code Online (Sandbox Code Playgroud)

但它会引发错误

操作数类型冲突:bigint与uniqueidentifier不兼容

type-conversion sql-server-2008

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

无法分配委托具有较少特定参数类型的匿名方法

我能够分配的方法M,以委托对象d与不太具体参数类型,但是当我想用相同的签名方法分配一个匿名方法Md,我得到一个错误.

这是为什么?

class derivedEventArgs : EventArgs { }

delegate void newDelegate(object o, derivedEventArgs e); 

static void Main(string[] args)
{
    newDelegate d = M; // ok
                d = (object o, EventArgs e) => { }; // error
}

public static void M(object o, EventArgs e) { }
Run Code Online (Sandbox Code Playgroud)

.net c# delegates

14
推荐指数
2
解决办法
1447
查看次数

ResourceDictionary的Windows样式不适用

由于我Window在我的应用程序中有多个s,我正在寻找一个不需要我binding在每个上面设置的解决方案Window.

我创建了一个ResourceDictionary具有style窗口背景的:

<Style TargetType="{x:Type Window}">
    <Setter Property="Background" Value="AliceBlue"/>
</Style>
Run Code Online (Sandbox Code Playgroud)

在我XAML,我设置ResourceDictionary:

<Window.Resources>
    <ResourceDictionary>
        <ResourceDictionary.MergedDictionaries>
            <ResourceDictionary Source="Templates.xaml" />
        </ResourceDictionary.MergedDictionaries>
    </ResourceDictionary>
</Window.Resources>
Run Code Online (Sandbox Code Playgroud)

没有错误,但我的Window颜色保持白色.

c# wpf xaml styles

14
推荐指数
2
解决办法
2万
查看次数

在custom指令中将参数传递给ng-click指令

ng-repeat在模板中使用自定义指令,如下所示:

<li ng-repeat="image in images">
    <img ng-src="{{image.url}}" ng-click="togglePhoto({{$index}})">
</li>
Run Code Online (Sandbox Code Playgroud)

在页面上呈现源时看起来像

<li ng-repeat="image in images" class="ng-scope">
    <img ng-src="http://example.com/example.jpg" ng-click="togglePhoto(1)" src="http://example.com/example.jpg">
</li>
Run Code Online (Sandbox Code Playgroud)

我有togglePhoto我的指令中定义的函数.如果没有{{index}}传入参数,它就可以工作并调用该函数.使用索引,它不会触发.

如何获取单击该togglePhoto功能的照片索引?

angularjs angularjs-directive

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

Task.Run和Task.Factory.StartNew之间的异常处理

我在使用时遇到了一个问题,Task.Factory.StartNew并试图捕获exception被抛出的问题.在我的应用程序中,我有一个长期运行的任务,我想封装在一个Task.Factory.StartNew(.., TaskCreationOptions.LongRunning);

但是,当我使用时,没有捕获异常Task.Factory.StartNew.然而,当我使用时Task.Run,它正如我所期望的那样工作,我认为它只是一个包装器Task.Factory.StartNew(根据例如这篇MSDN文章).

这里提供了一个工作示例,不同之处在于在使用时将异常写入控制台Task.Run,但在使用时不会Factory.StartNew.

我的问题是:
如果我有一个LongRunning可以抛出异常的任务,我应该如何在调用代码中处理它们?

private static void Main(string[] args)
{
    Task<bool> t = RunLongTask();
    t.Wait();
    Console.WriteLine(t.Result);
    Console.ReadKey();
}

private async static Task<bool> RunLongTask()
{
    try
    {
        await RunTaskAsync();
    }
    catch (Exception e)
    {
        Console.WriteLine(e);
        return false;
    }
    Console.WriteLine("success");
    return true;
}

private static Task RunTaskAsync()
{
    //return Task.Run(async () =>
    //    {
    //        throw new Exception("my exception");
    //    }); …
Run Code Online (Sandbox Code Playgroud)

c# exception task-parallel-library taskfactory

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

隐式实例化未定义模板'class'

当我试图在我的库中为const和非const模板参数提供函数时,我遇到了一个奇怪的问题.以下源代码是一个最小的示例现象:

#include <iostream>


template<typename some_type>
struct some_meta_class;

template<>
struct some_meta_class<int>
{
    typedef void type;
};



template<typename some_type>
struct return_type
{
    typedef typename some_meta_class< some_type >::type test;

    typedef void type;
};



template<typename type>
typename return_type<type>::type foo( type & in )
{
    std::cout << "non-const" << std::endl;
}

template<typename type>
void foo( type const & in )
{
    std::cout << "const" << std::endl;
}


int main()
{
    int i;

    int const & ciref = i;
    foo(ciref);
}
Run Code Online (Sandbox Code Playgroud)

我试图为foo实现一个非const版本和一个const版本,但不幸的是这个代码不能在CLANG 3.0和gcc 4.6.3上编译.

main.cpp:18:22:错误:未定义模板'some_meta_class'的隐式实例化

因此,由于某种原因,编译器想要使用非const版本的foo作为const …

c++ templates overloading const function

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

Monitor.Wait,Condition变量

给出以下代码片段(在学习线程时在某处找到).

 public class BlockingQueue<T>
    {
        private readonly object sync = new object();
        private readonly Queue<T> queue;
        public BlockingQueue()
        {
            queue = new Queue<T>();
        }

        public void Enqueue(T item)
        {
            lock (sync)
            {
                queue.Enqueue(item);
                Monitor.PulseAll(sync);
            }

        }
        public T Dequeue()
        {
            lock (sync)
            {
                while (queue.Count == 0)
                    Monitor.Wait(sync);

                return queue.Dequeue();
            }

        }
    }
Run Code Online (Sandbox Code Playgroud)

我想要了解的是,

为什么会有一个while循环?

   while (queue.Count == 0)
            Monitor.Wait(sync);
Run Code Online (Sandbox Code Playgroud)

这有什么问题,

 if(queue.Count == 0)
       Monitor.Wait(sync);
Run Code Online (Sandbox Code Playgroud)

事实上,当我看到使用while循环时发现的类似代码时,任何人都可以帮助我理解一个在另一个之上的使用.谢谢.

c# multithreading synchronization

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