小编Mr.*_*Boy的帖子

你能将属性值绑定到C#中的变量/数据吗?

在Flex(AS3)中,您可以将属性绑定到表达式/变量/对象.例如,button.enabled = {!obj.name.empty}它可以在其他方面进行非常简洁的GUI验证.

我没有在Visual Studio GUI设计器中看到任何这样的工具,但是想知道.Net/C#中是否存在这种功能,如果存在,在多大程度上?

.net c# data-binding winforms

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

线程如何在加入之前运行循环?

使用std::thread运行它运行一个无限循环,是有办法,如果线程被要求参加环可以查询的方法......还是我必须手动添加一个"了ExitThread"标志?

换句话说,isJoined看起来像什么(未经测试的伪代码):

std::atomic<int> global_counter (0);

void Run()
{
  while(!isJoined())
  {
    doSomething();
    ++global_counter;
  }
}

int main()
{
  thread t(Run);
  Sleep(10000);
  t.join();
  cout << "Iterated " << global_counter << "times" << endl;
}
Run Code Online (Sandbox Code Playgroud)

c++ multithreading stl c++11

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

你能回复一个'匿名结构'吗?

这个答案描述了在C#中构造'anonymous struct':C的内联匿名结构定义是否有等效的C#语法?

var x = new { SomeField = 1, SomeOtherField = "Two" };

从方法返回它是否有效以避免必须明确定义结构?对该答案的评论说不,但那是2011年...

c# .net-4.5

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

使用LINQ检查枚举的每个值最多是否在列表的一个元素中?

鉴于MyEnum,类MyClass财产EnumValue,并IList<MyClass> list有一个聪明的LINQ的方法来确定不枚举值在一个以上的列表元素被发现,而无需编写一个循环?

我知道一点代码高尔夫球,但这是我正在编写的真实世界的代码,我想知道它是否有可能以一种非恐怖的方式存在?

例如:

foreach (var e in Enum.GetValues(typeof(MyEnum)))
                Assert.IsTrue(list.Count(x => x.EnumValue == e) <= 1);
Run Code Online (Sandbox Code Playgroud)

c# linq lambda

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

使用文件对话框选择包含特定文件类型的文件夹?

我们的应用程序将其项目保存为一个充满东西的文件夹,包括实际的项目文件something.abc

加载项目时,我们必须进入项目文件夹并找到项目文件.我知道有文件夹选择操作系统对话框,但我只想让它工作,如果它可以看到文件夹中存在文件.

我确定我已经看到了这一点,但我不知道如何...我们正在使用Qt,但是对于Windows的答案或本机的Windows是受欢迎的.一件事是我想使用本机操作系统对话框,而不是从头开始构建我自己的对话框.

c++ winapi

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

使用 BinaryPrimitives 填充字节缓冲区的首选方法?

我使用System.Buffers.Binary.BinaryPrimitives以精确的方式将值写入字节数组。如果没有来自 MS 的示例示例,我可以看到几种方法来做到这一点,但我不确定其中一种是否比另一种更好。原则上,需要创建大量Span<byte>对象似乎不理想?

考虑这个简单的例子:

//writes these values in this order to a new 16-byte buffer
byte[] PopulateBuffer(int i1,int i2,Int16 s1,Int16 s2)
{
 var buffer = new byte[16]; //padded based on external protocol
 var span = new Span<byte>(buffer);
 BinaryPrimitives.WriteInt32LittleEndian(span.Slice(0,4),i1);
 BinaryPrimitives.WriteInt32LittleEndian(span.Slice(4,4),i2);
 BinaryPrimitives.WriteInt16LittleEndian(span.Slice(8,2),s1);
 BinaryPrimitives.WriteInt16LittleEndian(span.Slice(10,2),s2);
 return buffer;
}
Run Code Online (Sandbox Code Playgroud)

我在Span这里实例化 5 个对象。与通过位移位手动获取字节的老式方法相比,这看起来很混乱,但实际上开销很大吗?有没有更好的方法来使用这个类?

.net c#

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

在调用 Wait 之前访问任务的结果实际上会做什么?

var task = Task.Run(() => DoSomeStuff()).Result;

这里到底发生了什么?

我做了一个小测试:

using System;
using System.Threading.Tasks;

public class Program
{
    public static void Main()
    {
        var r = Task.Run( () => {Thread.Sleep(5000); return 123; }).Result;
        Console.WriteLine(r);
    }
}
Run Code Online (Sandbox Code Playgroud)

5 秒后打印“123”。那么访问任何此类属性是否可以Task作为调用 ie 的快捷方式,Task.Wait()这样做安全吗?


以前我的代码调用后Task.Delay(5000)立即返回“123”。我在我的问题中修复了这个问题,但将其留在这里作为评论和答案引用它。

c# task-parallel-library

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

以非线程安全的方式调用 vector::size / map::size 有什么含义?

据我所知,map::sizeand vector::size, whileconst不能保证线程安全。vector我发现的一种实现如下所示:

size_type size() const _NOEXCEPT
        {return static_cast<size_type>(this->__end_ - this->__begin_);}
Run Code Online (Sandbox Code Playgroud)

如果我以非线程安全的方式调用此方法,会出现什么问题?只是返回的结果可能会过时几毫秒,或者它可能会破坏其他线程修改集合的尝试或以其他方式冒严重问题的风险?

c++ multithreading stl

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

将 std::vector&lt;std::unique_ptr&lt;T&gt;&gt; 的所有权传递给类构造函数

现有的工厂方法生成std::vector<std::unique_ptr<MyType>>

我想将其传递到一个新类的构造函数中,该类将获得对象的所有权,因此向量的元素在类对象销毁时被销毁。

std::vector<std::unique_ptr<MyType>> vec = ...;
std::unique_ptr<MyClass> mc = new MyClass(vec);
return mc;

class MyClass
{
 public:
  MyClass(std::vector<std::unique_ptr<MyType>> &vec)
  {
    // ???????
  }

 private:
  std::vector<std::unique_ptr<MyType>> m_vec;
};
Run Code Online (Sandbox Code Playgroud)

但显然,原来的vec“拥有”这些MyType物体,它们将被销毁。

改变这种情况的最佳方法是什么?我真的不想离开unique_ptr,我想向未来的开发人员明确谁MyClass是向量的所有者。

c++ constructor

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

当我尝试转换为基类时,为什么编译器会抱怨?

BaseClass.h

class BaseClass
{
 ...
};
Run Code Online (Sandbox Code Playgroud)

SubClass.h

#include "BaseClass.h"
class SubClass : public BaseClass
{
 ...
};
Run Code Online (Sandbox Code Playgroud)

MyApp.h

class BaseClass;
class SubClass;
class MyApp
{
 SubClass *pObject;

 BaseClass *getObject()
 {
  return pObject;
 }
};
Run Code Online (Sandbox Code Playgroud)

我收到编译器错误:错误C2440:'return':无法从'SubClass*'转换为'BaseClass*'

为什么它不起作用,当然你可以自动转换为基类而不进行任何转换?

c++ inheritance

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

如果应用程序有内存泄漏,这些是在终止时解决的吗?

可能重复:
Windows 7清理C++内存泄漏?

我正在与同事讨论一个案例,其中一个例外情况导致Windows C++应用程序快速退出,我们的代码的性质意味着这似乎可能导致内存泄漏.

如果应用程序正在关闭,这有关系吗?当进程结束时,泄漏的内存是否会返回到系统?

c++ windows memory-leaks

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