System.Convert如何适合OO约定?

Qua*_*ker 17 c# oop

是不应该在对象之后调用类而不是动作?它只是不符合我学到的OO理论.

有人认为,由于Convert只保留静态方法,因此根本不应该创建它的实例,这可能使它成为可接受的例外.

Raz*_*dze 18

在C#中,您无法在类或结构之外创建方法.因此,当您想要创建实用程序方法时,最好将它们存储在静态类中.

所以我会说没有关于静态类的面向对象.

  • +1没有关于静态类的任何面向对象. (9认同)

Mar*_*ann 9

没有关于Convert类的面向对象,因为面向对象是关于具有行为的数据,而Convert类不包含任何数据或状态.

这基本上是一个实际的考虑因素.

例如,在Eiffel中,转换方法将在基类中定义,并且需要使用转换方法的所有类都将从该基类派生.但是,Eiffel具有多重继承,因此对于Eiffel来说是有意义的,但对于没有多重继承的C#这样的语言则没有.


Shl*_*itz 5

你的想法是正确的.Convert是一个静态实用程序类,有一个目的 - 在不同类型之间进行转换.

它只有方法(动词),所有这些都是转换 - 因此,为了便于阅读,最好将公共动词的名称赋予类本身,而不是在每个方法中重复它:

int i = Convert.ToInt32(value);
float f = Convet.ToSingle(value);
Run Code Online (Sandbox Code Playgroud)

比以下内容更流畅,更易读:

int i = Conversions.ConvertToInt32(value);
float f = Conversions.ConvertToSingle(value);
Run Code Online (Sandbox Code Playgroud)