在Flex(AS3)中,您可以将属性绑定到表达式/变量/对象.例如,button.enabled = {!obj.name.empty}
它可以在其他方面进行非常简洁的GUI验证.
我没有在Visual Studio GUI设计器中看到任何这样的工具,但是想知道.Net/C#中是否存在这种功能,如果存在,在多大程度上?
使用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#中构造'anonymous struct':C的内联匿名结构定义是否有等效的C#语法?
var x = new { SomeField = 1, SomeOtherField = "Two" };
从方法返回它是否有效以避免必须明确定义结构?对该答案的评论说不,但那是2011年...
鉴于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) 我们的应用程序将其项目保存为一个充满东西的文件夹,包括实际的项目文件something.abc
加载项目时,我们必须进入项目文件夹并找到项目文件.我知道有文件夹选择操作系统对话框,但我只想让它工作,如果它可以看到文件夹中存在文件.
我确定我已经看到了这一点,但我不知道如何...我们正在使用Qt,但是对于Windows的答案或本机的Windows是受欢迎的.一件事是我想使用本机操作系统对话框,而不是从头开始构建我自己的对话框.
我使用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 个对象。与通过位移位手动获取字节的老式方法相比,这看起来很混乱,但实际上开销很大吗?有没有更好的方法来使用这个类?
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”。我在我的问题中修复了这个问题,但将其留在这里作为评论和答案引用它。
据我所知,map::size
and vector::size
, whileconst
不能保证线程安全。vector
我发现的一种实现如下所示:
size_type size() const _NOEXCEPT
{return static_cast<size_type>(this->__end_ - this->__begin_);}
Run Code Online (Sandbox Code Playgroud)
如果我以非线程安全的方式调用此方法,会出现什么问题?只是返回的结果可能会过时几毫秒,或者它可能会破坏其他线程修改集合的尝试或以其他方式冒严重问题的风险?
现有的工厂方法生成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
是向量的所有者。
class BaseClass
{
...
};
Run Code Online (Sandbox Code Playgroud)
#include "BaseClass.h"
class SubClass : public BaseClass
{
...
};
Run Code Online (Sandbox Code Playgroud)
class BaseClass;
class SubClass;
class MyApp
{
SubClass *pObject;
BaseClass *getObject()
{
return pObject;
}
};
Run Code Online (Sandbox Code Playgroud)
我收到编译器错误:错误C2440:'return':无法从'SubClass*'转换为'BaseClass*'
为什么它不起作用,当然你可以自动转换为基类而不进行任何转换?
可能重复:
Windows 7清理C++内存泄漏?
我正在与同事讨论一个案例,其中一个例外情况导致Windows C++应用程序快速退出,我们的代码的性质意味着这似乎可能导致内存泄漏.
如果应用程序正在关闭,这有关系吗?当进程结束时,泄漏的内存是否会返回到系统?
c++ ×6
c# ×5
.net ×2
stl ×2
.net-4.5 ×1
c++11 ×1
constructor ×1
data-binding ×1
inheritance ×1
lambda ×1
linq ×1
memory-leaks ×1
winapi ×1
windows ×1
winforms ×1