.net - 为什么 dotnet 的 char.IsLower() 是静态方法?

标签 .net static char

这似乎违背了每一个设计准则。
接受 T 类型的单个参数的静态方法通常应该只是成员方法。

太奇怪了,我实际上不得不发布 StackOverflow question了解 IsUpper 的存在(因为它没有出现在自动完成中)

编辑

我知道我之前的陈述需要一点解释。一个好的设计示例是 String.ToLower()。它不是被原型(prototype)化为静态 void ToLower(String foo),而是一个成员方法。很明显(至少对我而言)char.IsLower() 也应该如此。

最佳答案

结构上的实例方法 不是线程安全的 .
另一方面,静态方法 .

静态方法接收结构的副本,实例方法接收托管指针。通过指针访问数据不是安全操作,很容易导致竞争条件。

这就是为什么结构/基元上的大多数方法都是静态的而不是实例的。

这里有一个类似的问题。

Why IsNan is a static method on the Double class instead of an instance property ?

关于.net - 为什么 dotnet 的 char.IsLower() 是静态方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/389257/

相关文章:

.net - EF Core - 无源运行迁移 - 等效于 EF6 的 migrate.exe

c - 在 C 中向字符数组加一有什么作用?

C++ - 派生类是否继承基类的静态成员?

java - 静态变量失去其值

c - C 中的 char* 数组

c - argv 和 char 的问题

mysql - Visual Studio/Visual Studio 2017 数据源向导的 MySQL 问题。你调用的对象是空的

.net - 使用 Sustainsys/Saml2 将 .NET MVC 应用程序与 SAML 联合起来

asp.net - Web.config 中的连接字符串缺少必需的空格

android - 返回应用时的静态变量null