0
public class SampleCass{
  public void DoSomething(SampleCass sample){

       //Do method implementation
 }
}

在上面的代码示例中,传递的方法参数类型与方法所属的类相同。我想知道为什么会这样,还有一些细节

提前致谢

4

5 回答 5

2

这可以有可能的用途。例如考虑一个 Number 类(哑):

public class Number {
    private readonly int _n = 0;

    public Number(int n) { _n = n; }

    public Number Add(Number other) {
         return new Number(this._n + other._n);
    }
}
于 2013-05-05T06:14:47.217 回答
2

那是因为该方法使用该类的实例而不是它自己的实例来做某事。想象一下,您有一个 Contact 类型和一个将其与另一个联系人进行比较的方法。你可以这样做:

public class Contact
{        
   public string name;

    public bool Compare(Contact c)
    {
       return this.name.Equals(c.name);
    }
}
于 2013-05-05T06:16:16.957 回答
0

如果我不得不猜测,我会说它是这样做的,因为方法内部的逻辑使用对象的两个实例- 一个调用方法(this),一个通过参数传递(sample)。如果方法内部的逻辑不使用对象的两个实例,则可能做错了。

希望这会有所帮助,有关更多详细信息,我们需要查看更多代码。

于 2013-05-05T06:36:53.147 回答
0

好吧,根据您的问题域,可以有很多用途。我可以给你另一个例子,你可以编写与类相同类型的字段。

例如:

public class Node
{
  public Node _next;
}

我知道您的问题非常特殊,但我认为这个示例可以为当前问题增加价值。

于 2013-05-05T06:41:07.633 回答
-1

(我给出了一个构造函数的例子,它将帮助你理解非构造函数的方法。)

这可用于创建复制构造函数,例如

public class SampleCass
{
    public int MyInteger { get; set;}

    //Similarly other properties

    public SampleClass(SampleClass tocopyfrom)
    {
            MyInteger = tocopyfropm.MyInteger;
           //Similarly populate other properties
    }
}

可以这样调用

SampleClass copyofsc = new SampleClass(originalsc);
于 2013-05-05T06:18:07.693 回答