Member 13921752 Ответов: 3

Как я могу передать список моего объекта в методе?


Понравилось, что я спросил: например, у меня есть два разных списка:
Список<myoldobject> старый;
Список<mynewobject> mnew;

Итак, я хотел бы сделать метод witch в одном из параметров, которые я могу передать string и list

Я не хочу проходить через два списка.

Как я могу это сделать?

Что я уже пробовал:

public void save(List<myoldobject> obj ,string s) // I don't know what I should write in "<>"
{}

3 Ответов

Рейтинг:
2

OriginalGriff

Есть несколько способов.
1) Вы можете создавать перегруженные методы:

public void save(List<myoldobject> obj ,string s)
{
   ...
}
И
public void save(List<mynewobject> obj ,string s)
{
   ...
}

2) Вы можете определить интерфейс IMyObject, который реализуют оба ваших класса (он не нуждается в методах), и использовать его для общей реализации:
public interface IMyObject { }
public class myoldclass : IMyObject { }
public class mynewclass :IMyObject { }
Затем вы можете передать любой из них своему методу:
public void save<T>(List<T> list, string s) where T: IMyObject
    {
    }

List<myoldclass> a = new List<myoldclass>();
List<mynewclass> b = new List<mynewclass>();
save(a, "");
save(b, "");
Но... внутри вашего метода вы не сможете использовать никакие члены класса, которые не являются частью интерфейса.


Рейтинг:
2

Sk Imad

public class Result <T>
{
  public T List { get; set; }
}

	

Result<Object> Info = new Result<Object>();
Info.List = anyList;
save(Info, "string");



 public void save(Result<Object> List, string info)
 {
    .............
 }


OriginalGriff

Причина моего голоса один: он не будет работать; черт возьми, он даже не будет компилироваться.
Ваш первый вариант решения просто даст вам:
ошибка CS1503: Аргумент `#1' не может преобразовать `систему.Коллекции.Generic.List<anyclassotherthanobject>' expression to type `System.Коллекции.Generic.List<object>'

Рейтинг:
1

Mehdi Gholam

Это зависит от того, что вы хотите сделать в методе, но вы можете:

public void save<T>(List<T> list, string s)
{

}