>source

기본적으로 동일한 클래스가 2 개 있습니다. 하나의 정적 속성 만 다릅니다. 그러나이 속성은 운영자에게 필요합니다. 기본 클래스를 사용하고 연산자를 올바르게 파생하는 방법을 알아낼 수 없었기 때문에 나는 두 개의 complett 클래스를 작성했습니다. 더 유연 해지고 싶을 수도 있습니다. 그래서 제 질문은 다음과 같습니다. 기본 연산자를 호출하지만 매개 변수를 전달하려면 어떻게해야합니까? 다음은 몇 가지 예입니다.

public class INT61
    {
        static uint Order= 61;
        public INT61 (uint val)
        {
            Val= val;
        }
        public static INT61 operator +(INT61 a)=> a;
        public static INT61 operator -(INT61 a)=> new INT61 (((Order -a.Val) % Order));
        public static INT61 operator +(INT61 a, INT61 b)=> new INT61 ((a.Val + b.Val) % Order);
        public static INT61 operator -(INT61 a, INT61 b)=> new INT61 ((a + (-b)) % Order);
        ...} //some % may are redundant
public class INT97
    {
        static uint Order= 97;
        public INT97 (uint val)
        {
            Val= val;
        }
        public static INT97 operator +(INT97 a)=> a;
        public static INT97 operator -(INT97 a)=> new INT97(((Order -a.Val) % Order));
        public static INT97 operator +(INT97 a, INT97 b)=> new INT97((a.Val + b.Val) % Order);
        public static INT97 operator -(INT97 a, INT97 b)=> new INT97 ((a + (-b)) % Order);
        ...}

내가 원하는 것은 다음과 같습니다.

  public class ModINT
    {
        public ModINT(uint val)
        {
            Val= val;
        }
        public static ModINT operator +(ModINT a)=> a; //not working INTxx is diffrent Type
        public static ModINT operator -(ModINT a)=> new ModINT (((Order -a.Val) % Order));
        public static ModINT operator +(ModINT a, ModINT b)=> new ModINT ((a.Val + b.Val) % Order);
        public static ModINT operator -(ModINT a, ModINT b)=> new ModINT ((a + (-b)) % Order);
        ...}
public class INT61 : ModINT
    {
        static uint Order= 61;
        public INT61 (uint val)
        {
            Val= val;
        }
     }
public class INT97 : ModINT
    {
        static uint Order= 97;
        public INT97 (uint val)
        {
            Val= val;
        }
        ...}

현재 저는 델리게이트와 제네릭에 대해 좀 더 알아 보려고하지만 이것이 올바른 방향인지조차 모릅니다. 무엇을보아야하는지 도움을 주면 내가 이것을 더 잘 이해할 수 있으므로 정말 멋질 것입니다.

이것이 귀하의 질문에 대답합니까? 연산자 오버로딩 및 상속 c #

Dominik2021-02-23 01:16:09

  • 이전 Go에서 이름 /번호로 Linux 시스템 호출을 어떻게 조회합니까?
  • 다음 충분한 메모리가 있음에도 불구하고 커널이 계속 종료되므로 JupyterLab에서 auto-sklearn을 실행할 수 없습니다.