0%

在开发领域,各要素存在着许多不同的版本。你要能够区分Visual Studio(集成开发环境)、C#(编程语言)和.NET(框架)的各个版本。尽管单独讨论这些元素而不涉及其他方面颇有挑战,但我会试着做到这一点… 另外,我在此不会讨论CLR(公共语言运行时)的版本,因为大部分开发者实际上不需要对此有深入了解。

阅读全文 »

方法重载是指你有两个相同名称但不同签名的方法。在编译时,编译器会根据方法调用的目标和参数的编译时类型来决定要调用哪一个方法。(假设你没有使用 dynamic,这会使情况稍微复杂一些。)

阅读全文 »

本文用于指导在一些特殊情况下该如何做。也就是,您在某处(通常是数据库)有一些字符数据,这些数据需要经过几个步骤,最终显示给用户(通常在网页上)。不幸的是,有些字符会显示异常。由于涉及多个步骤,问题可能出现在多个地方。本文旨在帮助您简单、可靠地找出问题所在。

阅读全文 »

最近在工作的时候碰到了一个关于MeshCollider的问题,情况是这样的:需求是在游戏中存在一个绕自身Y轴旋转的三角形障碍,类似下图:

Triangle

阅读全文 »

Unicode探测器

这部分以前是在文章末尾,但这其实是最有用的,所以我认为它应当放在文章一开始的地方,广而告之。下面的工具是一段小小的Javascript代码,它可以显示你输入到文本框中的任何字符串的有用信息。它不仅可以帮你找出代码中字符的UTF-8表示形式,而且我发现它还可以用于排查因为无法打印的文本而造成的问题。

在这里输入文本:

Character Unicode UTF-16 UTF-8
阅读全文 »

System.String类型(C#中简写为string)是.NET中最重要的类型之一,不幸的是人们对它有很多误解。本文试图讲解该类型的一些基础知识。

什么是字符串

字符串大致上说就是一个字符序列,每个字符都是U+0000到U+FFFF范围内的Unicode字符(后面会详细介绍)。字符串类型string(我之后都会用C#简写,而不是放System.String)有以下特点:

阅读全文 »

在我关于二进制浮点类型的文章(原文 译文)中,我简单地提到了System.Decimal(或者指C#中decimal)类型。本文给出了关于该类型的更多细节,包括它的表示方法以及它与更常见的二进制浮点类型之间的一些区别。本文从这里开始,之后所说的decimal就是指System.Decimal,同理,提到floatdouble就是指.NET的类型System.SingleSystem.Double。为了让文章更易阅读,我也会把它们的名字改成正常字体。(注释:译文里还是会区分一下的

阅读全文 »

当在.NET中碰到一些运算结果“出错”的情况时,很多人都会感到惊讶。但这并不是.NET所特有的——大多数语言/平台都使用所谓的 "浮点 "算术来表示非整数。这本身是没有问题的,但是你需要对其表面下的本质有所了解,才不至于对一些结果产生疑惑。

需要说明的是,我不是这方面的专家。自撰写本文以来,我发现了另一篇——由真正的专家Jeffrey Sax撰写的文章。我强烈推荐各位也去看看他在浮点数方面的文章

阅读全文 »

你觉得你能准确预测C#初始化发生的时间吗?这可比你想象的要复杂得多…

请注意,所有结果都是我在C#编译器和CLR的某些(现在还没说明)组合上看到的。你可能会观察到不同的行为,而这些行为仍然遵循规范规定的内容。随着平台和实现的组合越来越多,想要穷尽也没啥意思。

阅读全文 »

介绍

单例模式是软件工程中最为人熟知的一种设计模式。本质上讲,单例就是一个类,这个类只允许创建一个自己的实例,并且通常会提供一个对该实例的简单访问。最常见的情况是,单例在实例化时不允许指定任何参数,否则的话,在第二次请求时,如果使用不同的参数,就会出现问题!(如果所有带有相同参数的请求都会访问相同的实例,那么工厂模式会比较合适)本文只涉及不需要参数的情况。通常情况下,对单例创建的要求是延迟(Lazy)创建-即在第一次需要之前不会创建实例。

阅读全文 »