Tag: C#的

实际使用`stackalloc`关键字

有没有人实际上用C#编程时使用stackalloc ? 我知道这是什么,但唯一一次出现在我的代码中是偶然的,因为例如,当我开始键入static时,Intellisense会提示它。 虽然它与stackalloc的使用场景没有关系,但是我实际上在我的应用程序中执行了大量的传统互操作,所以我stackalloc可以使用unsafe代码。 不过,我通常想办法避免unsafe 。 而且,因为.Net中的单个线程的堆栈大小是〜1Mb(纠正我,如果我错了),我更使用stackalloc保留。 是否有一些实际的情况可以说:“这是正确的数据和处理的数量和处理不安全,并使用stackalloc ”?

UNIX非阻塞I / O:O_NONBLOCK与FIONBIO

在每一个在BSD套接字编程环境中运行的例子和讨论中,似乎将文件描述符设置为非阻塞I / O模式的推荐方式是使用fcntl()的O_NONBLOCK标志,例如 int flags = fcntl(fd, F_GETFL, 0); fcntl(fd, F_SETFL, flags | O_NONBLOCK); 我已经在UNIX上进行了十多年的networking编程,并一直使用FIONBIO ioctl()调用来执行此操作: int opt = 1; ioctl(fd, FIONBIO, &opt); 从来没有真正想过为什么。 刚刚就这样学习了。 有没有人有任何评论可能各自的优点之一? 我认为可移植性轨迹有所不同,但不知道ioctl_list(2)对于个体ioctl方法的方面没有说明的程度。

NameValueCollection vs Dictionary <string,string>

可能重复: IDictionary <string,string>或NameValueCollection 任何理由我应该使用Dictionary <string,string>而不是NameValueCollection? (在C#/ .NET框架中) 选项1,使用NameValueCollection: //enter values: NameValueCollection nvc = new NameValueCollection() { {"key1", "value1"}, {"key2", "value2"}, {"key3", "value3"} }; // retrieve values: foreach(string key in nvc.AllKeys) { string value = nvc[key]; // do something } 选项2,使用Dictionary <string,string> … //enter values: Dictionary<string, string> dict = new Dictionary<string, string>() { {"key1", "value1"}, {"key2", […]

模板默认参数

如果我可以做以下事情: template <typename T = int> class Foo{ }; 为什么我不允许主要做以下事情? Foo me; 但是我必须指定以下内容: Foo<int> me; C ++ 11引入了默认的模板参数,现在他们难以理解我的完整理解。

如果找不到search结果,则返回“NULL”对象

我对C ++相当陌生,所以在学习的时候我倾向于devise大量的Java-isms。 无论如何,在Java中,如果我有一个“search”方法的类,将返回一个Collection< T >匹配一个特定参数的对象T ,我会返回该对象,如果对象没有在集合中find,我会返回null 。 然后在我的调用函数,我只是检查if(tResult != null) { … } 在C ++中,我发现如果对象不存在,我不能返回null值。 我只想返回一个types为T的“指示符”,通知调用函数没有find对象。 我不想抛出exception,因为这不是一个真正的例外情况。 这就是我现在的代码: class Node { Attr& getAttribute(const string& attribute_name) const { //search collection //if found at i return attributes[i]; //if not found return NULL; // what should this be? } private: vector<Attr> attributes; } 我怎样才能改变它,所以我可以给这种标记?

ICollection <T> Vs List <T>在entity framework中

在我开始devise几个entity framework应用程序之前,我只观看了一些networking广播。 我真的没有阅读那么多的文档,现在我觉得我很痛苦。 我已经在我的课程中使用List<T> ,并且工作得很好。 现在我已经阅读了一些文档,并指出我应该使用ICollection<T> 。 我改变了这一点,甚至没有引起模型上下文的改变。 这是因为这两个List<T>和ICollection<T>inheritanceIEnumerable<T> ,这是EF实际需要什么? 但是,如果是这种情况,为什么EF文档没有声明它需要IEnumerable<T>而不是ICollection<T> ? 无论如何,我所做的还有什么缺点,还是应该改变呢?

Eclipse CDT for C标准库头文件中的“未解决的包含”错误

我为eclipse设置了CDT,并写了一个简单的hello world C程序: #include <stdio.h> int main(void){ puts("Hello, world."); return 0; } 程序build立并正确运行,但是当我把鼠标放在它上面时,eclipse不断的在包含语句的旁边显示这个黄色的问号,这个语句里写着"Unresolved inclusion: <stdio.h>" 。 它不影响程序的运行,但我觉得它很烦人。 有没有人有任何想法如何删除它?

Qt是否支持虚拟纯插槽?

我在Qt中的GUI项目有很多“configuration页面”类,它们都直接从QWidgetinheritance。 最近,我意识到所有这些类共享2个公共时隙( loadSettings()和saveSettings() )。 对此,我有两个问题: 用这两个插槽编写一个中间基本抽象类(让它命名为BaseConfigurationPage )是否是有意义的虚拟纯方法? (每个可能的configuration页面将总是有这两个方法,所以我会说“是”) 在我做我的代码的重大变化之前(如果我必须):Qt是否支持虚拟纯插槽? 有什么我应该知道的? 这是一个描述一切的代码示例: class BaseConfigurationPage : public QWidget { // Some constructor and other methods, irrelevant here. public slots: virtual void loadSettings() = 0; virtual void saveSettings() = 0; }; class GeneralConfigurationPage : public BaseConfigurationPage { // Some constructor and other methods, irrelevant here. public slots: void […]

缩进#defines

我知道#define s等通常不会缩进。 为什么? 目前我正在编写一些代码,其中有#ifdef , #else #ifdef , #else , #else #endif等等的混合。所有这些经常混入正常的C代码中。 #define的非缩进使得它们很难阅读。 缩进代码与非缩进#define s的混合是一场噩梦。 不缩进#define s有什么好处? 如果我缩进,会不会让我变成坏人? 这不是更好吗? #ifdef SDCC #if DEBUGGING == 1 #if defined (pic18f2480) #define FLASH_MEMORY_END 0x3DC0 #elif defined (pic18f2580) #define FLASH_MEMORY_END 0x7DC0 #else #error "Can't set up flash memory end!" #endif #else #if defined (pic18f2480) #define FLASH_MEMORY_END 0x4000 #elif defined […]

在asp.net mvc中如何平铺通过JsonResult返回的ExpandoObject?

在编译运行时的服务器端dynamic对象时,我非常喜欢ExpandoObject ,但是我在JSON序列化过程中遇到了麻烦。 首先,我实例化对象: dynamic expando = new ExpandoObject(); var d = expando as IDictionary<string, object>; expando.Add("SomeProp", SomeValueOrClass); 到现在为止还挺好。 在我的MVC控制器中,我想将其作为JsonResult发送,所以我这样做: return new JsonResult(expando); 这将JSON序列化到下面,供浏览器使用: [{"Key":"SomeProp", "Value": SomeValueOrClass}] 但是,我真的很想看到这个: {SomeProp: SomeValueOrClass} 我知道我可以实现这一点,如果我使用dynamic而不是ExpandoObject – JsonResult能够将dynamic属性和值序列化到一个对象(没有键或值业务), 但我需要使用ExpandoObject的原因是因为我不直到运行时才知道对象上的所有属性 ,而据我所知,我不能dynamic地将属性添加到dynamic而不使用ExpandoObject 。 我可能不得不在JavaScript中筛选“Key”,“Value”业务,但是我希望在把它发送给客户端之前弄清楚。 谢谢你的帮助!