static List<Contact> ListOfContact = new List<Contact>(); //Sorce of data:
public void SaveContactToFile() //method to save a data
{
try
{
FileName = @"contacts.txt";
// Check if file already exists. If no, create it.
if (!File.Exists(FileName))
{
File.Create(FileName);
using (TextWriter tw = new StreamWriter(FileName))
{
foreach (String s in ListOfContact.verbList)
tw.WriteLine(s);
}
}
}
catch (Exception ex)
{ Console.WriteLine(ex.Message); }





Ваш СписокКонтактов — это список экземпляров Contact. В самом списке нет члена verbList. Поэтому код в вашем вопросе даже не скомпилируется.
Если вы хотите получить доступ к члену verbList каждого экземпляра контакта, выполните итерацию по списку и получите доступ к экземпляру контакта verbList члена для каждого:
foreach (var contactInstance in ListOfContact)
{
... do stuff with contactInstance.verbList ...
}
В вашем коде так много не хватает. Во-первых, ListOfContact — это список, но вы пытаетесь получить доступ к verbList из него, что не имеет смысла.
Вот пример, который вы можете использовать...
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Reflection;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApp2
{
internal class Program
{
static void Main(string[] args)
{
List<Contact> Contacts = new List<Contact>{
new Contact("John", "000-000-0000"),
new Contact("Peter", "000-000-0001"),
new Contact("George", "000-000-0001")
};
var fileName = "contacts.txt";
//FileStream file = File.Create(fileName);
Console.WriteLine("Writting to File");
Console.WriteLine(fileName);
using(StreamWriter writer = new StreamWriter(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, fileName)))
{
foreach(var contact in Contacts)
{
Console.WriteLine(contact.Print());
writer.WriteLine(contact.Print());
}
}
Console.WriteLine("Complete...");
Console.WriteLine("Press any key to continue");
Console.ReadLine();
}
public class Contact
{
public string Name { get; set; }
public string Number { get; set; }
public Contact(string name, string number)
{
Name = name;
Number = number;
}
public string Print()
{
return $"{Name} - {Number}";
}
}
}
}
Большое спасибо все работает. Ваш пример очень помогает! :))
Добро пожаловать в Stack Overflow. Пожалуйста, постарайтесь быть более описательным и подробным в своих вопросах, как указали остальные. Если ваш главный вопрос заключался в том, почему метод SaveContactToFile не записывает в файл для вашего объекта ListOfContact. метод Textwriter WriteLine записывает в текстовый поток. Чтобы фактические буферизованные данные записывались в базовый поток, вам нужно будет вызвать tw.Flush();
и закройте поток сразу после выхода из цикла, что является хорошей практикой тв.Закрыть();
Не могли бы вы привести пример данных ListOfContact и пример того, как вы хотите, чтобы они записывались в файл? Название предполагает, что вы пытаетесь записать весь объект в файл, в то время как код предполагает, что вы просто записываете одно свойство объекта в файл.