Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Для всех типов, кроме integer, выдает ошибку компиляции при попытке вернуть явно указанное значение Nullable<T> посредством использования ?. #1285

Closed
EmilyGraceSeville7cf opened this issue Sep 29, 2018 · 1 comment
Labels

Comments

@EmilyGraceSeville7cf
Copy link

EmilyGraceSeville7cf commented Sep 29, 2018

type
  TClass = class
    fBoolean: boolean;
    fByte: byte;
    fInteger: integer;
    fInt64: int64;
    fReal: real;
    fChar: char;
  end;

//function FBoolean(x: TClass): boolean? := x?.fBoolean; // Program7.pas(10) : Нельзя преобразовать тип boolean к integer

//function FByte(x: TClass): byte? := x?.fByte; // Program7.pas(13) : Нельзя преобразовать тип Nullable<integer> к Nullable<byte>

function FInteger(x: TClass): integer? := x?.fInteger;

//function FInt64(x: TClass): int64? := x?.fInt64; // Program7.pas(17) : Нельзя преобразовать тип Nullable<integer> к Nullable<int64>

//function FReal(x: TClass): real? := x?.fReal; // Program7.pas(19) : Нельзя преобразовать тип real к integer

//function FChar(x: TClass): char? := x?.fChar; // Program7.pas(21) : Нельзя преобразовать тип char к integer

begin
end.

Аналогичный код на C#:

using System;

namespace Example
{
    class Class
    {
        public bool fBoolean;
        public byte fByte;
        public int fInt;
        public long fInt64;
        public float fFloat;
        public double fDouble;
        public decimal fDecimal;
        public char fChar;
    }

    class Program
    {
        public static bool? FBoolean(Class x) => x?.fBoolean;

        public static byte? FByte(Class x) => x?.fByte;

        public static int? FInt(Class x) => x?.fInt;

        public static float? FInt64(Class x) => x?.fFloat;

        public static double? FDouble(Class x) => x?.fDouble;

        public static decimal? FDecimal(Class x) => x?.fDecimal;

        public static char? FChar(Class x) => x?.fChar;

        public static void Main(string[] args)
        {
            Console.ReadLine();
        }
    }
}

успешно компилируется.

@EmilyGraceSeville7cf EmilyGraceSeville7cf changed the title Для всех типов кроме integer выдает ошибку компиляции при попытке вернуть значение Nullable<T> посредством использования ?. Для всех типов, кроме integer, выдает ошибку компиляции при попытке вернуть значение Nullable<T> посредством использования ?. Sep 29, 2018
@EmilyGraceSeville7cf EmilyGraceSeville7cf changed the title Для всех типов, кроме integer, выдает ошибку компиляции при попытке вернуть значение Nullable<T> посредством использования ?. Для всех типов, кроме integer, выдает ошибку компиляции при попытке вернуть явно указанное значение Nullable<T> посредством использования ?. Sep 29, 2018
@miks1965 miks1965 added the bug label Sep 29, 2018
@miks1965 miks1965 closed this as completed Oct 2, 2018
@miks1965
Copy link
Contributor

miks1965 commented Oct 2, 2018

Решено

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

2 participants