Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在C中操纵密封类型#_C#_Oop_Inheritance_Extension Methods - Fatal编程技术网

C# 在C中操纵密封类型#

C# 在C中操纵密封类型#,c#,oop,inheritance,extension-methods,C#,Oop,Inheritance,Extension Methods,例如,我想向integer(即Int32)添加一个方法,这将使我能够执行以下操作: int myInt = 32; myInt.HelloWorld(); 可以说,您不必坚持执行上述操作,而是可以编写一个方法,该方法采用整数,HelloWorld(integer),如下所示: int myInt = 32; HelloWorld(myInt); 然而,我只是好奇这是否可能。如果为真,那么向已知类添加一些其他功能是否是一种良好的编程实践 PS:我尝试创建另一个类,该类继承自Int32,但无法派

例如,我想向
integer
(即
Int32
)添加一个方法,这将使我能够执行以下操作:

int myInt = 32;
myInt.HelloWorld();
可以说,您不必坚持执行上述操作,而是可以编写一个方法,该方法采用
整数
HelloWorld(integer)
,如下所示:

int myInt = 32;
HelloWorld(myInt);
然而,我只是好奇这是否可能。如果为真,那么向已知类添加一些其他功能是否是一种良好的编程实践


PS:我尝试创建另一个类,该类继承自
Int32
,但无法派生自密封类型“int”。

您可以为
Int32
添加扩展方法

   public static class Int32Extensions
   {
       public static void HelloWorld(this int value) 
       {
         // do something
       }
   }
只需记住使用类所在的名称空间

。 从面向对象的角度讲,它们没有什么错,因为您既不能访问私有变量,也不能以任何方式改变对象的行为


这是你所描述的唯一语法上的甜点。

我想你提到了扩展方法

使用扩展方法

static class Program
{
    static void Main(string[] args)
    {
        2.HelloWorld();
    }

    public static void HelloWorld(this int value)
    {
        Console.WriteLine(value);
    }
}

您可以使用扩展方法 像这样:

public static class IntExtensions
{
    public static string HelloWorld(this int i)
    {
        return "Hello world";
    }
}

Q:在已知类中添加一些其他功能是一种很好的编程实践吗

这种类型的讨论实际上属于“程序员”

请看一下关于程序员的讨论,其中有很多关于使用扩展方法的哲学观点:

此外:


我认为您需要扩展方法尽管扩展方法可以做到这一点(正如其他人所指出的),但我建议您不要对基本类型(如“int”)这样做。对于一个维护工程师来说,一年后查看您的代码并想知道数字32表示“你好”意味着什么,而不是像World.SayHello(32)这样的东西,这就不那么直观了。扩展方法的直观感觉是,扩展对象正在做一些事情,但是很少有一个数字应该积极地做。