C# 为整数值标识符和新编号创建类

C# 为整数值标识符和新编号创建类,c#,C#,我想用C#通过一些训练测试,但我真的坚持了这个 任务说明:在不更改函数()中的任何字符串的情况下修复编译器错误,创建integer类以标识具有特定名称的整数变量myIntIdentifier,并输出myNmb值 public void Function() { myIntIdentClass orgNumb = new Number { numbVal = 1, numbStr = "One&qu

我想用C#通过一些训练测试,但我真的坚持了这个

任务说明:在不更改
函数()中的任何字符串的情况下修复编译器错误,创建integer类以标识具有特定名称的整数变量
myIntIdentifier
,并输出
myNmb

        public void Function()
        {                
             myIntIdentClass orgNumb = new Number { numbVal = 1, numbStr = "One"};
             int myNmb= orgNumb;

             Console.WriteLine(myNmb);
        }
以下是我尝试过的:

    public class myIntIdentClass
    {
        public int numb { get; set; }

        public static implicit operator int(myIntIdentClass v)
        {
            throw new NotImplementedException();
        }
    }

    public class Number
    {
        private int intVal { get; set; }
        private string strVal { get; set; }
    }
但是
新编号显示:

“Number”由于其保护级别而不可访问


您无法初始化类道具,因为它们是私有的。

在这里,您试图使用一行初始值设定项初始化您的类 但是你的道具是私人的,所以你不能访问它们

 new Number { numbVal = 1, numbStr = "One"};
您可以将Number类中道具的封装级别设置为public以修复此错误

公共类编号
{
公共int intVal{get;set;}
公共字符串strVal{get;set;}
}
顺便说一句,道具的惯例是封装级别为public,命名为PascalCase


另一个错误是,您缺少从Number到myIntIdentClass的隐式强制转换,您无法初始化类道具,因为它们是私有的。

在这里,您试图使用一行初始值设定项初始化您的类 但是你的道具是私人的,所以你不能访问它们

 new Number { numbVal = 1, numbStr = "One"};
您可以将Number类中道具的封装级别设置为public以修复此错误

公共类编号
{
公共int intVal{get;set;}
公共字符串strVal{get;set;}
}
顺便说一句,道具的惯例是封装级别为public,命名为PascalCase

另一个错误是缺少从Number到myIntIdentClass的隐式转换

  • 提示:
    private
    表示只能在类内访问。将访问修饰符更改为
    公共
    ,或
    内部

  • 还要注意
    Number
    myIntIdentClass
    如何共享至少一个整数属性。我认为这里的意图是使用继承

  • 最后,您需要编写一个用户定义的
    隐式运算符
    ,以便在需要时将
    myIntIdentClass
    转换为整数

  • 下面的代码填充了上述项目

    public class myIntIdentClass
    {
        public int numbVal { get; set; }
        public static implicit operator int(myIntIdentClass my)
             => my.numbVal;
    }
    public class Number : myIntIdentClass
    {
        public string numbStr { get; set; }
    } 
    
  • 提示:
    private
    表示只能在类内访问。将访问修饰符更改为
    公共
    ,或
    内部

  • 还要注意
    Number
    myIntIdentClass
    如何共享至少一个整数属性。我认为这里的意图是使用继承

  • 最后,您需要编写一个用户定义的
    隐式运算符
    ,以便在需要时将
    myIntIdentClass
    转换为整数

  • 下面的代码填充了上述项目

    public class myIntIdentClass
    {
        public int numbVal { get; set; }
        public static implicit operator int(myIntIdentClass my)
             => my.numbVal;
    }
    public class Number : myIntIdentClass
    {
        public string numbStr { get; set; }
    } 
    

    你能给我看看你的数字课吗?@Miraziz你好,我不知道怎么用这个case@RezaAghaei我已经试过了,但对我来说,不改变Value=1,NumberString=“One”的情况下,不清楚如何使用它。似乎您的函数方法与Number不在同一个类中。那么,将数字保护改为公共(公共类编号)你能显示你的数字类吗?@Miraziz似乎你好,我不确定,在这种情况下如何使用它case@RezaAghaei我已经试过了,但对我来说,不改变Value=1,NumberString=“One”的情况下,不清楚如何使用它。似乎您的函数方法与Number不在同一个类中。因此,将编号保护更改为公共(公共类编号)