Tag: C#的

可以在.Net 4.0中使用Tuple的实际示例?

我已经看到.Net 4中引入的Tuple,但我无法想象它可以在哪里使用。 我们总是可以做一个自定义的类或结构。

返回myVar与返回(myVar)之间有区别吗?

我正在看一些C#代码的例子,并注意到一个例子包装在()的返回。 我一直都是这样做的: return myRV; 有没有不同的做法: return (myRV);

我如何内插string?

我想在C#中执行以下操作(来自Python背景): strVar = "stack" mystr = "This is %soverflow" % (strVar) 如何将string内部的标记replace为外部的值?

如何在Unix控制台/ Macterminal中运行C / C ++?

如何在Unix控制台或Macterminal中运行C或C ++? (我知道了,忘记了,重新学习了,现在写下来。)

实施非地面日历

当我正在研究另一个问题的解决scheme时,我发现自己想知道是否可以使用.NET的Calendar类来实现不基于地球约定的日历。 例如, 火星的日子比地球上一天的时间长2.7% 到目前为止,航天器着陆器项目所使用的惯例是使用24小时“火星时钟”跟踪当地太阳时间,其中小时,分钟和秒钟比其标准(地球)持续时间长2.7%。 有没有什么好的方法来实现MarsCalendar ,使秒的长度不同于标准的GregorianCalendar ,从而能够使用基于它的所有标准AddDays() , AddHours()等函数的DateTime对象? (注:理想情况下,解决scheme – 如果存在的话 – 将适用于任何forms的行星物体,可以定义长度一致的“1天”和“1年”。火星虽然是一个很好的例子,但)

编译C#Lambdaexpression式的性能

考虑以下对集合的简单操作: static List<int> x = new List<int>() { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 }; var result = x.Where(i => i % 2 == 0).Where(i => i > 5); 现在让我们使用expression式。 以下代码大致相同: static void UsingLambda() { Func<IEnumerable<int>, IEnumerable<int>> lambda = l => l.Where(i => i % 2 == 0).Where(i => i > […]

做短路操作|| 和&&存在可空布尔? RuntimeBinder有时会这样认为

我阅读了条件逻辑运算符 ||上的C#语言规范 和&&也被称为短路逻辑运算符。 对我来说,这似乎不清楚,如果这些存在可空布尔,即操作数typesNullable<bool> (也写bool? ),所以我尝试了与非dynamictypes: bool a = true; bool? b = null; bool? xxxx = b || a; // compile-time error, || can't be applied to these types 这似乎解决了这个问题(我无法清楚地理解规范,但是假设Visual C#编译器的实现是正确的,现在我知道了)。 不过,我也想尝试dynamic绑定。 所以我尝试了这个: static class Program { static dynamic A { get { Console.WriteLine("'A' evaluated"); return true; } } static dynamic B { get […]

使用C#和RhinoMocks进行testing驱动开发的最佳实践

为了帮助我的团队编写可testing的代码,我想出了这个简单的使我们的C#代码库更可testing的最佳实践列表。 (有些观点指的是Rhino Mocks的限制,这是C#的嘲讽框架,但规则也可能更普遍适用。)有没有人有任何最佳实践,他们遵循? 要最大化代码的可testing性,请遵循以下规则: 先写testing,然后写代码。 原因:这可以确保您编写可testing的代码,并且每行代码都会为其编写testing。 使用dependency injectiondevise类。 原因:你不能模拟或testing什么是看不到的。 使用Model-View-Controller或Model-View-Presenter将UI代码与其行为分开。 原因:允许testing业务逻辑,而不能testing的部分(UI)被最小化。 不要写静态方法或类。 原因:静态方法很难或不可能被隔离,Rhino Mock无法嘲笑它们。 编程接口,而不是类。 原因:使用接口澄清对象之间的关系。 接口应该定义一个对象在其环境中需要的服务。 此外,使用Rhino Mocks和其他模拟框架可以轻松地模拟界面。 隔离外部依赖。 原因:无法testing未parsing的外部依赖关系。 将虚拟的方法标记为虚拟的方法。 原因:Rhino Mocks无法模拟非虚拟方法。

C#的枚举和匹配属性的命名约定

我经常发现自己实现了一个类,把某种自己的状态属性作为一个枚举:我有一个Status枚举和一个状态types的Status属性。 我应该如何解决这个名称冲突? public class Car { public enum Status { Off, Starting, Moving }; Status status = Status.Off; public Status Status // <===== Won't compile ===== { get { return status; } set { status = value; DoSomething(); } } } 如果状态枚举对于不同types是通用的,我会把它放在课堂外面,问题就解决了。 但状态只适用于汽车,因此在课堂外申报枚举是没有意义的。 你在这种情况下使用什么命名约定? 注:这个问题在回答这个问题的意见中部分辩论过。 由于这不是主要问题,所以没有得到太多的知名度。 编辑:菲利普Ekbergbuild议国际海事组织优秀的解决scheme,为'状态'的具体情况。 不过,如果你想知道枚举/属性名称不同的解决scheme,那么我会很有兴趣的,正如Michael Prewecki的回答 。 EDIT2(2010年5月):我最喜欢的解决scheme是复用枚举types名称,如Chris S.所build议。根据MS指南,这应该只用于标志枚举。 但是我越来越喜欢它了。 我现在也用它来定期枚举。

用于Mac的C ++ IDE

我教用Visual Studio的C ++课程。 我的一个学生有一台Mac电脑,并正在寻找一个在他的机器上使用的IDE。 有什么好推荐?