Tag: C#的

指针expression式:* ptr ++,* ++ ptr和++ * ptr

最近我遇到了自己无法理解的这个问题。 这三个expression式真的意味着什么? *ptr++ *++ptr ++*ptr 我试过里奇。 但不幸的是,他不能跟随他所说的这三项行动。 我知道,他们都执行增加指针/指向的值。 我也可以猜测评估的优先顺序和顺序可能有很多。 就像一个指针递增指针,然后获取该指针的内容,一个简单的提取内容,然后增加指针等等。正如你所看到的,我不清楚他们的实际操作,我想尽快明确。 但是当我有机会将它们应用于节目时,我真的迷失了方向。 例如: int main() { const char *p = "Hello"; while(*p++) printf("%c",*p); return 0; } 给我这个输出: ello 但我的期望是打印出Hello 。 最后一个请求 – 请给我举例说明每个expression式如何在给定的代码片段中工作。 大多数时候,只有一小段理论会飞过我的脑海。

开关/模式匹配的想法

我最近一直在研究F#,尽pipe我不太可能马上跳过栅栏,但它确实突出了C#(或者库支持)可以让生活更轻松的一些领域。 特别是,我正在考虑F#的模式匹配function,它允许使用非常丰富的语法 – 比当前的开关/条件C#等价物更富有performance力。 我不会试图给出一个直接的例子(我的F#没有达到它),但总之它允许: 按types进行匹配(对被区分的联合体进行全覆盖检查)[注意,这也推断了绑定variables的types,赋予成员访问等] 按谓词匹配 上面的组合(可能还有一些我不知道的其他场景) 虽然C#最终可以借用一些丰富的内容,但在此期间,我一直在研究在运行时可以做些什么 – 例如,将一些对象敲在一起以便允许: var getRentPrice = new Switch<Vehicle, int>() .Case<Motorcycle>(bike => 100 + bike.Cylinders * 10) // "bike" here is typed as Motorcycle .Case<Bicycle>(30) // returns a constant .Case<Car>(car => car.EngineType == EngineType.Diesel, car => 220 + car.Doors * 20) .Case<Car>(car => car.EngineType == EngineType.Gasoline, car => […]

如何从C#中的generics方法返回NULL?

我有一个这个(虚拟)代码的通用方法(是的,我知道IList有谓词,但我的代码不使用IList,但一些其他集合,无论如何,这是不相关的问题…) static T FindThing<T>(IList collection, int id) where T : IThing, new() { foreach T thing in collecion { if (thing.Id == id) return thing; } return null; // ERROR: Cannot convert null to type parameter 'T' because it could be a value type. Consider using 'default(T)' instead. } 这给了我一个构build错误 “无法将null转换为types参数'T',因为它可能是一个值types,请考虑使用'default(T)'。 我可以避免这个错误吗?

使用LINQ获取一个List <>中的项目,这些项目不在另一个List <>中

我会假设有一个简单的LINQ查询来做到这一点,我只是不完全知道如何。 请参阅下面的代码片段,注释说明了我想要做的事情: class Program { static void Main(string[] args) { List<Person> peopleList1 = new List<Person>(); peopleList1.Add(new Person() { ID = 1 }); peopleList1.Add(new Person() { ID = 2 }); peopleList1.Add(new Person() { ID = 3 }); List<Person> peopleList2 = new List<Person>(); peopleList2.Add(new Person() { ID = 1 }); peopleList2.Add(new Person() { ID = 2 }); […]

如何将parameter passing给线程中的ThreadStart方法?

如何将parameter passing给C#中的Thread.ThreadStart()方法? 假设我有一种叫做“下载”的方法 public void download(string filename) { // download code } 现在我在主要方法中创build了一个线程: Thread thread = new Thread(new ThreadStart(download(filename)); 预期的错误方法types。 如何使用参数的目标方法将parameter passing给ThreadStart ?

如何使用ConfigurationElementCollection实现ConfigurationSection

我正试图在一个项目中实现一个自定义的configuration部分,并继续运行我不明白的exception。 我希望有人能填补这里的空白。 我有App.config ,看起来像这样: <?xml version="1.0" encoding="utf-8" ?> <configuration> <configSections> <section name="ServicesSection" type="RT.Core.Config.ServicesConfigurationSectionHandler, RT.Core"/> </configSections> <ServicesSection type="RT.Core.Config.ServicesSection, RT.Core"> <Services> <AddService Port="6996" ReportType="File" /> <AddService Port="7001" ReportType="Other" /> </Services> </ServicesSection> </configuration> 我有一个像这样定义的ServiceConfig元素: public class ServiceConfig : ConfigurationElement { public ServiceConfig() {} public ServiceConfig(int port, string reportType) { Port = port; ReportType = reportType; } [ConfigurationProperty("Port", DefaultValue […]

什么是正确的方式使用C + + 11的基于范围的?

什么是正确的方式使用C + + 11的基于范围的? 应该使用什么语法? for (auto elem : container)还是for (auto& elem : container)或for (const auto& elem : container) ? 还是其他的?

什么时候适合使用C#部分类?

我是新来的部分类,并想知道是否有人可以给我一个概述,为什么我会使用它们,我会在这个过程中获得什么优势。

平移和缩放图像

我想在WPF中创build一个简单的图像查看器,使用户能够: 平移(通过鼠标拖动图像)。 缩放(使用滑块)。 显示重叠(例如矩形select)。 显示原始图像(如果需要,使用滚动条)。 你能解释一下怎么做吗? 我没有在网上find一个好的样本。 我应该使用ViewBox吗? 还是ImageBrush? 我需要ScrollViewer吗? 谢谢!

如何安装cocoa豆荚?

我提到了太多的联系和尝试,但没有成功。 如果有人有一个想法,那么请与我分享。 我阅读cocoa豆荚文件,并多次尝试安装,但总是因为启动步骤失败。 我发现一个错误,我不能安装gem第一。 任何人都可以一个接一个地给我步骤吗? 如何安装或演示。 这是我试过的一个环节。 屏幕截图指的是我给出的这个控制台错误: