타자에 대한 질문 - 페이지 6

 
내가 기억하는 한, C#은 mql과 좋은 친구가 아닙니다.
 
Ilya Malev :
내가 기억하는 한, C#은 mql과 좋은 친구가 아닙니다.

https://www.mql5.com/ru/forum/285631

10. MQL5: "스마트" 기능 가져오기가 있는 .NET 라이브러리에 대한 기본 지원이 추가되었습니다. 이제 특별한 래퍼를 작성하지 않고도 .NET 라이브러리를 사용할 수 있습니다. MetaEditor가 알아서 처리합니다.

Новая версия платформы MetaTrader 5 build 1930: Плавающие окна графиков и .Net библиотеки в MQL5
Новая версия платформы MetaTrader 5 build 1930: Плавающие окна графиков и .Net библиотеки в MQL5
  • 2018.10.25
  • www.mql5.com
26 октября 2018 года будет выпущена обновленная версия платформы MetaTrader 5...
 
나는 C#으로 글을 쓰도록 촉구하지 않는다. 암시적 변환의 이점이 의심스럽기 때문에(IMHO, 설탕, 더 이상 없음) 이는 전략의 수익성을 증가시키지 않습니다. 누군가 코딩 전략에 이것이 얼마나 큰 도움이 될 것인지 설명한다면 나는 기꺼이 새로운 것을 배울 것입니다.
 
Vasiliy Sokolov :
이것은 전략의 수익성을 증가시키지 않습니다.

프로그래밍 기술을 논의할 때 전략의 수익성을 언급하는 것은 다소 우울합니다.

바실리 소콜로프 :
누군가 이것이 코딩에 큰 도움이 될 것이라고 설명한다면 나는 새로운 것을 배우게 되어 기쁠 것입니다.

따라서 배열을 다차원으로 만들지 않는 것이 정상입니다. 다른 유형의 값을 가진 배열은 말할 것도 없습니다. 그러한 코드는 mql에 맞지 않기 때문에 하나로도 할 수 없습니다.

  Array array;

   double d= 123.456 ;

  array[ 5 ]=d;

  d=array[ 5 ];

물론 여기에 d=array[5].to_double() 을 작성하고 이것이 어떻게 되어야 하는지 가장하고 비뚤어진 코드를 즐길 수 있습니다. 그러나 캐스트 연산의 과부하 가 여전히 허용된다면 d=array[5]와 같은 표기법을 선호하는 사람은 없을 것입니다.

 
Ilya Malev :

...

물론 여기에 d=array[5].to_double() 을 작성하고 이것이 어떻게 되어야 하는지 가장하고 비뚤어진 코드를 즐길 수 있습니다. 그러나 캐스트 연산의 과부하 가 여전히 허용된다면 d=array[5]와 같은 표기법을 선호하는 사람은 없을 것입니다.

글쎄, 똑바로. d=배열[5] 다음을 수행할 수 있습니다.

 template < typename T>
class MainArray
{
private :
   T m_items[];
   int m_curr;
public :
   MainArray()
   {
       ArrayResize (m_items, 16 );
      m_curr = 0 ;
   }
   void Add(T item)
   {
      m_items[m_curr++] = item;
   }
   T operator []( int index)
   {
       return m_items[index];
   }
};
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart ()
{
   MainArray< double > array;
   array.Add( 123.456 );
   double v = array[ 0 ];
   printf (( string )v);
}

지루하다면 array[3] = 4.00123에 어려움이 있습니다. 그러나 여전히 읽기 쉽고 유용합니다.

 
Vasiliy Sokolov :

글쎄, 똑바로. d=배열[5] 다음을 수행할 수 있습니다.

지루하다면 array[3] = 4.00123에 어려움이 있습니다. 그러나 여전히 읽기 쉽고 유용합니다.

예, d=array[5]가 가능합니다. 하지만 array[5]=d는 할 수 없습니다. = 대신 %=를 수행하는 것이 가능하지만. 문제 없습니다. 동시에 아이콘은 모든 작업이 완료된 장소를 알려줍니다.))

 
Ilya Malev :

예, d=array[5]가 가능합니다. 하지만 array[5]=d 수 없습니다 . = 대신 %=를 수행하는 것이 가능하지만. 문제 없습니다. 동시에 아이콘은 모든 작업이 완료된 장소를 알려줍니다.))

당신이 정말로 그것을 원한다면, 당신은 할 수 있습니다

 #property strict

#include <TypeToBytes.mqh> // https://www.mql5.com/ru/code/16280

#define PRINT(A) :: Print ( #A + " = " + ( string )(A));

void OnStart ( void )
{
// Работа со стандартными типами
   color Color = C'241,248,255' ;

  PRINT(_R(Color)[( uchar ) 1 ])             // Green-составляющая цвета - 248

   _W(Color)[ 2 ] = ( uchar ) 230 ;             // Записали по смещению 2 значение (uchar)230.
  PRINT(Color)                           // Убедились, что Color теперь C'241,248,230'

// Работа со строками
   string Str = "abcd" ;

   _W(Str)[ 2 ] = "98765" ;                   // Побайтовая запись строки в строку со смещением 2
  PRINT(Str)

   string StrArray[] = { "123" , "45" , "6789" };
  _W(Str) = StrArray;                     // Записали в строку строковый массив
  PRINT(Str)

   _W(Str)[ 3 ] = ( uchar ) 0 ;                 // В байт со смещением 3 записали ноль, тем самым отбрезав строку (длина - 3 ANSI-символа (4 байта))
  PRINT(Str);
}

등.

 
pavlick_ :

처음에는 나도 비판적이었고, 그 다음에는 다음과 같이 생각했습니다. 나 자신을 위한 용도를 찾았을 것입니다.

네, 젠장, 3~4년 전에 괄호 연산자와 유형 캐스팅 연산자를 요청했습니다.

더 잘할 수 있는지 물어봐

 
여기에 게시물에 플러스를 넣을 수 없다는 것이 유감입니다)
 
Ilya Malev :

...

물론 여기에 d=array[5].to_double() 을 작성하고 이것이 어떻게 되어야 하는지 가장하고 비뚤어진 코드를 즐길 수 있습니다. 그러나 캐스트 연산의 과부하 가 여전히 허용된다면 d=array[5]와 같은 표기법을 선호하는 사람은 없을 것입니다.

글쎄, 사람들은 문제가 있습니다))) 쇼핑, 나는 그렇게 살았습니다!

그건 그렇고, d=array[5].to_double()을 작성하는 것이 d=(double)array[5]보다 훨씬 쉽습니다 . 그냥 점을 누르십시오. 그러나 우리는 쉬운 방법을 찾고 있지 않습니다 ...