Tag: C#的

var关键字有什么意义?

var关键字不需要明确的types声明,而且我已经感兴趣地阅读了关于何时可能适用的SO讨论 。 我也阅读了(但不是使用) 嘘似乎进一步通过使声明一个局部variables可选 。 随着Boo,types和声明都可以暗示。 这让我想知道,为什么C#语言devise者会麻烦地包含一个var关键字呢? 更新 :是的,var支持匿名types,但匿名types本身并不需要var关键字… var anon = new { Name = "Terry", Age = 34 }; 与 anon = new { Name = "Terry", Age = 34 };

为什么常量expression式有未定义行为的排除?

我正在研究核心常量expression式*中允许的内容, C ++标准草案第5.19节的常量expression式中包含了以下内容: 一个条件expression式是一个核心常量expression式,除非它涉及以下之一作为一个潜在的评估子expression式(3.2),但是没有被评估的逻辑AND(5.14),逻辑OR(5.15)和条件(5.16)操作的子expression式不考虑[注意:重载操作符调用一个函数。 并列出了下面的子弹中的排除项(包括我的重点 ): – 注意:例如,包括有符号整数溢出(第5章),某些指针算术(5.7),除以零(5.6)或某些移位操作(5.8) – 结束注释]。 呃 ? 为什么常量expression式需要这个子句来覆盖未定义的行为 ? 常量expression式有什么特别之处,需要不确定的行为才能排除在特殊情况之外呢? 这个条款有没有给我们带来任何好处或工具? 作为参考,这看起来像广义常量expression式的最后一个版本。

目标机器主动拒绝127.0.0.1:3446,因此无法build立连接

我正在使用WCF4.0模板 – REST 。 我试图做一个方法,上传一个文件使用stream。 问题总是发生在 Stream serverStream = request.GetRequestStream(); stream媒体类: namespace LogicClass { public class StreamClass : IStreamClass { public bool UploadFile(string filename, Stream fileStream) { try { FileStream fileToupload = new FileStream(filename, FileMode.Create); byte[] bytearray = new byte[10000]; int bytesRead, totalBytesRead = 0; do { bytesRead = fileStream.Read(bytearray, 0, bytearray.Length); totalBytesRead += bytesRead; […]

C#:“+ = anEvent”和“+ = new EventHandler(anEvent)”之间的区别

以下面的代码: private void anEvent(object sender, EventArgs e) { //some code } 以下是什么区别? [object].[event] += anEvent; //and [object].[event] += new EventHandler(anEvent); [UPDATE] 显然,两者之间没有区别……前者只是后者的语法糖。

为什么这个C ++代码片段编译(非void函数不返回值)

我今天早上在我的一个图书馆里发现了这个: static tvec4 Min(const tvec4& a, const tvec4& b, tvec4& out) { tvec3::Min(a,b,out); out.w = min(aw,bw); } 我期望编译器错误,因为这个方法不返回任何东西,并且返回types不是void 。 想到的唯一的两件事是 在唯一调用此方法的地方,返回值未被使用或存储。 (这种方法应该是void – tvec4返回types是复制粘贴错误) 一个默认构build的tvec4正在创build,这似乎有点不像,哦,C ++中的其他一切。 我还没有find解决这个问题的C ++规范的一部分。 参考(公顷)表示赞赏。 更新 在某些情况下,这会在VS2012中产生一个错误。 我没有缩小细节,但是很有趣。

如何配对新的与删除可能导致内存泄漏只?

首先,根据C ++标准,对于分配了new[]东西,使用delete是未定义的行为。 在Visual C ++ 7中,这样的配对可能会导致两个后果之一。 如果new []'ed具有简单的构造函数和析构函数,VC ++只是使用new而不是new[]并且使用delete来工作正常 – new调用“allocate memory”, delete只调用“free memory”。 如果new []'ed有一个不平凡的构造函数或析构函数,那么上面的技巧就无法完成了 – VC ++ 7必须调用正确数量的析构函数。 所以它在数组前面加上一个size_t存储元素的个数。 现在,由new[]返回的地址指向第一个元素,而不是指向块的开始。 所以如果使用delete ,它只会调用第一个元素的析构函数,并调用与“allocate memory”返回的地址不同的地址的“空闲内存”,这会导致HeapFree()中的一些错误指示,我怀疑是指堆腐败。 然而,在这里和那里,人们可以阅读在new[]之后使用delete导致内存泄漏的错误语句。 我怀疑任何大小的堆腐败比仅仅为第一个元素调用析构函数的事实重要得多,可能没有调用的析构函数没有释放堆分配的子对象。 在new[]之后如何使用delete可能导致某些C ++实现中的内存泄漏?

将JSON转换为DataTable

我有以下格式的JSON: [ {"id":"10","name":"User","add":false,"edit":true,"authorize":true,"view":true}, {"id":"11","name":"Group","add":true,"edit":false,"authorize":false,"view":true}, {"id":"12","name":"Permission","add":true,"edit":true,"authorize":true,"view":true} ] 我怎样才能转换成一个C# DataTable对象如下? ——————————————————————— ID | Name | Add | Edit | View | Authorize ——————————————————————— 10 | User | true | true | true | true 11 | Group | true | true | true | true 12 | Permission| true | true | true | true

Microsoft Visual C ++的两阶段模板实例化到底是什么“破碎”?

因此,我一直听到MSVC没有正确实现两阶段模板查找/实例的问题。 从我目前了解的情况来看,MSVC ++只是对模板类和函数进行基本的语法检查,并不检查模板中使用的名称是否至less已被声明或沿着这些行进行了检查。 它是否正确? 我错过了什么?

将数组作为parameter passing给C中的函数

我写了一个包含数组作为参数的函数,并通过传递数组的值如下所示调用它。 void arraytest(int a[]) { // changed the array a a[0]=a[0]+a[1]; a[1]=a[0]-a[1]; a[0]=a[0]-a[1]; } void main() { int arr[]={1,2}; printf("%d \t %d",arr[0],arr[1]); arraytest(arr); printf("\n After calling fun arr contains: %d\t %d",arr[0],arr[1]); } 我发现虽然我通过传递值来调用arraytest()函数,但是int arr[]的原始副本已更改。 你能解释一下为什么?

自我跟踪实体的目的是什么?

我一直在阅读.net中的自我跟踪实体,以及它们是如何从* .edmx文件生成的。 我正在努力理解的东西是什么生成这些实体给你的基本EF实体? 此外,有些人提到了自我跟踪实体和Silverlight,但是为什么要使用这些而不是RIA服务生成的客户端或共享类? 自我跟踪实体的目标是什么?为什么要使用它们?