小编Rup*_*pal的帖子

扩展方法是否类似于在c#中使用"new"关键字方法?

我们可以在扩展方法和继承之间建立一些关系吗?

或者是一种类似于new在C#中使用-keyword 的扩展方法?

.net c# inheritance extension-methods new-operator

3
推荐指数
1
解决办法
283
查看次数

在方法中创建新对象时扩展方法的混乱行为

我试图理解c#的扩展方法的行为,并在下面找到了东西:

下面是类Program的扩展方法,它有一个名为SeeIt的字段.

public static void Prod(this Program p)
{
   Console.WriteLine("i am in ext- pro" );
   p = new Program();   // look out for this line (call this line as #@2)
   p.SeeIt = 100;
}
Run Code Online (Sandbox Code Playgroud)

现在当我这样调用这个方法时:

var pr = new Program();
pr.SeeIt = 200;

pr.Prod();

COnsole.WriteLine(pr.SeeIt);
Run Code Online (Sandbox Code Playgroud)

我在下面看到的东西:

  1. 当我在扩展方法中评论#@ 2行时,结果来自扩展方法,即100.
  2. 当我保持#2行的行时,结果为200.

我想知道 :

  • 究竟发生了什么,我在扩展方法中说p = new Program()?

c# extension-methods

2
推荐指数
1
解决办法
131
查看次数

标签 统计

c# ×2

extension-methods ×2

.net ×1

inheritance ×1

new-operator ×1