2013-05-05 3 views
0
public class SampleCass{ 
    public void DoSomething(SampleCass sample){ 

     //Do method implementation 
} 
} 

В приведенном выше примере кода передаваемый тип параметра метода аналогичен классу, к которому принадлежит метод. Я хотел бы знать, почему это делается таким образом, а также некоторые подробности о немКласс класса C# как метод Параметр

Заранее спасибо

+3

Мы не можем знать намерения - мы понятия не имеем, что должен сделать этот метод, или где вы его нашли, или кем был автор. По крайней мере, вам нужно будет предоставить больше контекста. –

ответ

2

Это может иметь, возможно, использует. Рассмотрим, например, класс Number (dumb):

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); 
    } 
} 
2

Это потому, что этот метод использует экземпляр этого класса, отличный от его собственного, чтобы что-то сделать. Представьте, что у вас есть тип контакта и метод, который сравнивает его с другим контактом. Вы можете сделать это:

public class Contact 
{   
    public string name; 

    public bool Compare(Contact c) 
    { 
     return this.name.Equals(c.name); 
    } 
} 
-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); 
+0

Прочтите внимательно. Вопрос не в конструкторе. –

+0

@FranciscoAfonso: Я уже писал это. –

0

Если бы мне пришлось угадывать, я бы сказал, что это делается Тхи так как логический метод использует два экземпляра объекта - один, по которому вызывается метод (, этот номер), и один прошел через параметр (образец). Если логический внутренний метод не использует оба экземпляра объекта, что-то может быть сделано неправильно.

Надеюсь, что это поможет, для получения более подробной информации нам нужно увидеть больше кода.

0

В зависимости от вашей проблемной области может быть много применений. Я могу привести вам еще один пример, где вы можете писать поля того же типа, что и для класса.

например:

public class Node 
{ 
    public Node _next; 
} 

Я знаю, что ваш вопрос очень специфичен, но я думал, что этот пример может добавить значение к текущему вопросу.

Смежные вопросы