C#
Создаем новое C# консольное приложение... и напишем код
using System;
using System.Collections.Generic; // подключаем Dictionary
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApplication1
{
class Book
{
public string BookName { set; get; }
public string AuthorName { set; get; }
}
class Program
{
static void Main(string[] args)
{
// создаем List
Dictionary<Book, int> books = new Dictionary<Book, int>();
// заполняем книги
books.Add(new Book() { BookName = "Властелин Колец", AuthorName = "Толкин" }, 300 /*price*/);
books.Add(new Book() { BookName = "Три мушкетера", AuthorName = "Дюма" }, 200 /*price*/);
// ищем книгу
Book findBook = new Book() { BookName = "Три мушкетера", AuthorName = "Дюма" };
int price = 0;
if (books.TryGetValue(findBook, out price))
{
Console.WriteLine("Найдено! Название:{0}, Автор:{1}, Цена:{2}", findBook.BookName, findBook.AuthorName, price);
}
else
{
Console.WriteLine("Не найдено");
}
// на экране увидим "Не найдено"
}
}
}
Чтобы искалось не по ссылке объекта а по содержимому нужно написать 2 метода для Book:
public override bool Equals(Object obj)
{
...
}
public override int GetHashCode()
{
...
}
C#
Решение. Полный код.
using System;
using System.Collections.Generic; // подключаем Dictionary
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApplication1
{
class Book
{
public string BookName { set; get; }
public string AuthorName { set; get; }
public override bool Equals(Object obj)
{
Book book = obj as Book;
return (BookName.CompareTo(book.BookName) == 0 && AuthorName.CompareTo(book.AuthorName) == 0);
}
public override int GetHashCode()
{
unchecked
{
return BookName.GetHashCode() + AuthorName.GetHashCode();
}
}
}
class Program
{
static void Main(string[] args)
{
// создаем List
Dictionary<Book, int> books = new Dictionary<Book, int>();
// заполняем книги
books.Add(new Book() { BookName = "Властелин Колец", AuthorName = "Толкин" }, 300 /*price*/);
books.Add(new Book() { BookName = "Три мушкетера", AuthorName = "Дюма" }, 200 /*price*/);
// ищем книгу
Book findBook = new Book() { BookName = "Три мушкетера", AuthorName = "Дюма" };
int price = 0;
if (books.TryGetValue(findBook, out price))
{
Console.WriteLine("Найдено! Название:{0}, Автор:{1}, Цена:{2}", findBook.BookName, findBook.AuthorName, price);
}
else
{
Console.WriteLine("Не найдено");
}
// на экране увидим "Найдено! Название:Три мушкетера, Автор:Дюма, Цена:200"
}
}
}