Re: Как объявить в классе свойство по умлочанию?
От: Рысцов Денис  
Дата: 05.11.10 12:34
Оценка: 2 (1)
Здравствуйте, ivs13, Вы писали:

I>Можно ли как-то объявить в классе на C# свойство по умолчанию?

I>Например, есть класс MyClass с List внутри. Нужно, чтобы можно было написать myClass.Count, а не myClass.list.Count

http://msdn.microsoft.com/en-us/library/z5z9kes2.aspx
Re: Как объявить в классе свойство по умлочанию?
От: _FRED_ Черногория
Дата: 05.11.10 11:30
Оценка: +1
Здравствуйте, ivs13, Вы писали:

I>Можно ли как-то объявить в классе на C# свойство по умолчанию?

I>Например, есть класс MyClass с List внутри. Нужно, чтобы можно было написать myClass.Count, а не myClass.list.Count

Есть DefaultPropertyAttribute но он делает совсем не то, что нужно.

Default Properties остались в васике, но с изменениями, в частности, "Visual Basic 2008 does not support parameterless default properties, and consequently does not allow this programming shortcut.".
Help will always be given at Hogwarts to those who ask for it.
Re[2]: Как объявить в классе свойство по умлочанию?
От: ivs13  
Дата: 05.11.10 11:56
Оценка: :)
Здравствуйте, Аноним, Вы писали:
public class MyClass { List list = new List(); public int Count { get { return list.Count } } }


Тогда придется объявлять все, что умеет List, так не интересно, Count я только для пояснения задачи привел...
Re[2]: Как объявить в классе свойство по умлочанию?
От: ivs13  
Дата: 05.11.10 12:05
Оценка: :)
Здравствуйте, _FRED_, Вы писали:

This language is not supported or no code example is available.


коротко и ясно... Спасибо за подсказку!
Re: Как объявить в классе свойство по умлочанию?
От: WolfHound  
Дата: 05.11.10 16:21
Оценка: +1
Здравствуйте, ivs13, Вы писали:

В C# это не сделать.
Но есть языки в которых это возможно.
http://nemerle.org/Design_patterns
... << RSDN@Home 1.2.0 alpha 4 rev. 1472>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Как объявить в классе свойство по умлочанию?
От: ivs13  
Дата: 05.11.10 11:09
Оценка:
Можно ли как-то объявить в классе на C# свойство по умолчанию?
Например, есть класс MyClass с List внутри. Нужно, чтобы можно было написать myClass.Count, а не myClass.list.Count
Re: Как объявить в классе свойство по умлочанию?
От: Аноним  
Дата: 05.11.10 11:20
Оценка:
Здравствуйте, ivs13, Вы писали:

I>Можно ли как-то объявить в классе на C# свойство по умолчанию?

I>Например, есть класс MyClass с List внутри. Нужно, чтобы можно было написать myClass.Count, а не myClass.list.Count

public class MyClass { List list = new List(); public int Count { get { return list.Count } } }
Re[2]: Как объявить в классе свойство по умлочанию?
От: ivs13  
Дата: 05.11.10 14:28
Оценка:
Здравствуйте, Рысцов Денис


using System;
using System.Collections.Generic;

namespace ConsoleApplication1
{
  class Program
  {
    class MyList
    {
      private List<int> list = new List<int>();
      public static implicit operator List<int>(MyList l) { return l.list; }
      public MyList() { list.Add(1); list.Add(2); list.Add(3); }
    }

    static void Main(string[] args)
    {
      MyList myList = new MyList();
      for (int i=0; i < ((List<int>)myList).Count; i++)
        Console.WriteLine(((List<int>)myList)[i].ToString());
      Console.ReadLine();
    }

  }
}




Так получается, но не совсем то, требуется явное преобразование: ((List<int>)myList).Count; без него не хочет. А хотелось бы просто myList.Count, myList.Add, myList[]...
Re[3]: Как объявить в классе свойство по умлочанию?
От: Muxa  
Дата: 05.11.10 15:25
Оценка:
а если так?

I>
I>    static void Main(string[] args)
I>    {
I>      List<int> myList = (List<int>)new MyList();
I>      for (int i=0; i < myList.Count; i++)
I>        Console.WriteLine(myList[i].ToString());
I>      Console.ReadLine();
I>    }
I>
Re[4]: Как объявить в классе свойство по умлочанию?
От: ivs13  
Дата: 05.11.10 15:54
Оценка:
Здравствуйте, Muxa, Вы писали:
M>а если так?

Тогда не обратиться ко всем остальным полям класса:

    class MyList
    {
      private List<int> list = new List<int>();
      public static implicit operator List<int>(MyList l) { return l.list; }
      public String Name = "myName";
      public MyList() { list.Add(1); list.Add(2); list.Add(3); }
    }

    static void Main(string[] args)
    {
      List<int> myList = (List<int>)new MyList();
      Console.WriteLine(myList.Name);
    }
Re[5]: Как объявить в классе свойство по умлочанию?
От: Muxa  
Дата: 05.11.10 16:28
Оценка:
I>Тогда не обратиться ко всем остальным полям класса:
наследование?

class MyList<T> : List<T>  { ... }
Re[6]: Как объявить в классе свойство по умлочанию?
От: ivs13  
Дата: 08.11.10 08:26
Оценка:
Здравствуйте, Muxa, Вы писали:
M>наследование?

А если класс нужно унаследовать от другого своего класса?
Re[2]: Как объявить в классе свойство по умлочанию?
От: ivs13  
Дата: 08.11.10 08:38
Оценка:
Здравствуйте, WolfHound, Вы писали:

WH>Но есть языки в которых это возможно.


Я знаю, например, Delphi5
Re[3]: Как объявить в классе свойство по умлочанию?
От: WolfHound  
Дата: 08.11.10 09:14
Оценка:
Здравствуйте, ivs13, Вы писали:

WH>>Но есть языки в которых это возможно.

I>Я знаю, например, Delphi5
А так чтобы сразу несколько "свойств по умолчанию"?
... << RSDN@Home 1.2.0 alpha 4 rev. 1472>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[4]: Как объявить в классе свойство по умлочанию?
От: ivs13  
Дата: 08.11.10 12:39
Оценка:
Здравствуйте, WolfHound, Вы писали:
WH>А так чтобы сразу несколько "свойств по умолчанию"?

Хм... как тогда определить, какое из них наиболее "умолчабельное"?
Re[5]: Как объявить в классе свойство по умлочанию?
От: WolfHound  
Дата: 08.11.10 12:45
Оценка:
Здравствуйте, ivs13, Вы писали:

I>Хм... как тогда определить, какое из них наиболее "умолчабельное"?

Как тебе хочется.
Макросы же...
... << RSDN@Home 1.2.0 alpha 4 rev. 1472>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[5]: Как объявить в классе свойство по умлочанию?
От: _FRED_ Черногория
Дата: 08.11.10 12:49
Оценка:
Здравствуйте, ivs13, Вы писали:

WH>>А так чтобы сразу несколько "свойств по умолчанию"?

I>Хм... как тогда определить, какое из них наиболее "умолчабельное"?

Предлагается самому написать макрос и самому в макросе решить, что нужно. Например, при конфликте можно выдывать ошибку _компиляции_. Или предупреждение и "подцеплять" первое попавшееся или не просто "попавшееся", а выбранное по некоей стратегии, коей может параметризоваться макрос

В общем, как желаете, так и делайте и что сделаете то и получите
Help will always be given at Hogwarts to those who ask for it.
Re[6]: Как объявить в классе свойство по умлочанию?
От: ivs13  
Дата: 09.11.10 09:40
Оценка:
Здравствуйте, _FRED_, Вы писали:
_FR>Предлагается самому написать макрос и самому в макросе решить, что нужно. Например, при конфликте можно выдывать ошибку _компиляции_. Или предупреждение и "подцеплять" первое попавшееся или не просто "попавшееся", а выбранное по некоей стратегии, коей может параметризоваться макрос

Если не затруднит, приведите небольшой пример, чтобы понятно было, как такое делается.
Re[7]: Как объявить в классе свойство по умлочанию?
От: _FRED_ Черногория
Дата: 09.11.10 09:46
Оценка:
Здравствуйте, ivs13, Вы писали:

_FR>>Предлагается самому написать макрос и самому в макросе решить, что нужно. Например, при конфликте можно выдывать ошибку _компиляции_. Или предупреждение и "подцеплять" первое попавшееся или не просто "попавшееся", а выбранное по некоей стратегии, коей может параметризоваться макрос


I>Если не затруднит, приведите небольшой пример, чтобы понятно было, как такое делается.


С этим лучше обратиться в форум Nemerle.
Help will always be given at Hogwarts to those who ask for it.
Re[8]: Как объявить в классе свойство по умлочанию?
От: ivs13  
Дата: 10.11.10 10:30
Оценка:
Здравствуйте, _FRED_, Вы писали:
_FR>С этим лучше обратиться в форум Nemerle.

А, так это другой язык программирования... я и с C# толком не разобрался, а тут еще что-то другое
Re[9]: Как объявить в классе свойство по умлочанию?
От: _FRED_ Черногория
Дата: 10.11.10 10:35
Оценка:
Здравствуйте, ivs13, Вы писали:

_FR>>С этим лучше обратиться в форум Nemerle.


I>А, так это другой язык программирования... я и с C# толком не разобрался, а тут еще что-то другое


По поводу шарпа я уже сказал, что нельзя
Help will always be given at Hogwarts to those who ask for it.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.