C# 转换为自动属性意味着什么?

C# 转换为自动属性意味着什么?,c#,class,variables,properties,members,C#,Class,Variables,Properties,Members,如果以前有人问过我这个问题,我很抱歉,但我对编程还不熟悉 问题: 每当我创建属性时,我都会收到一条消息,说明我应该将其转换为自动属性 我的程序正在运行,所以我应该为此担心吗 using System; namespace ConsoleApplication12 { struct Calculator { // Properties for returning addition numbers private static long _add1, _add2; pr

如果以前有人问过我这个问题,我很抱歉,但我对编程还不熟悉

问题: 每当我创建属性时,我都会收到一条消息,说明我应该将其转换为自动属性

我的程序正在运行,所以我应该为此担心吗

using System;

namespace ConsoleApplication12
{
struct Calculator
{

    // Properties for returning addition numbers 
    private static long _add1, _add2;
    private static long _addtotal;

    public static long AddNumberOne
    {
        get { return _add1; } set { _add1 = value; } 

    }

    public static long AddNumberTwo
    {
        get { return _add2; } set { _add2 = value; } 

    }

    // Properties for returning multiplication numbers 
    private static long _mul1, _mul2;
    private static long _multiplytotal;

    public static long MulNumberOne
    {
        get { return _mul1; } set { _mul1 = value; } 

    }

    public static long MulNumberTwo
    {
        get { return _mul2; } set { _mul2 = value; } 

    }

    // Properties for returning division numbers 
    private static double _div1, _div2;
    private static double _dividetotal;

    public static double DivNumberOne
    {
        get { return _div1; } set { _div1 = value; } 

    }

    public static double DivNumberTwo
    {
        get { return _div2; } set { _div2 = value; } 

    }

    // Properties for returning minus numbers 
    private static double _min1, _min2;
    private static double _minustotal;

    public static double MinNumberOne
    {
        get { return _min1; } set { _min1 = value; } 

    }

    public static double MinNumberTwo
    {
        get { return _min2; } set { _min2 = value; } 

    }

    // Property for returning program run state 
    private static bool _run = true;

    public static bool RunProgram
    {
        get { return _run; } set { _run = value; }
    }

    // Properties for returning total after calculation is made 
    public static long TotalAddition
    {
        get { return _addtotal; } set { _addtotal = value; } 

    }

    public static long TotalMultiply
    {
        get { return _multiplytotal; } set { _multiplytotal = value; } 

    }

    public static double TotalDivide
    {
        get { return _dividetotal; } set { _dividetotal = value; } 

    }

    public static double TotalMinus
    {
        get { return _minustotal; } set { _minustotal = value; } 

    }

    // Methods for calculating total 
    public static long AddCalculation(long a, long b)
    {
        TotalAddition = a + b;
        return TotalAddition;
    }

    public static long MultiplyCalculation(long a, long b)
    {
        TotalMultiply = a*b;
        return TotalMultiply;
    }

    public static double DivideCalculation(double a, double b)
    {
        TotalDivide = a/b;
        return TotalDivide;
    }

    public static double MinusCalculation(double a, double b)
    {
        TotalMinus = a - b;
        return TotalMinus;
    }

    // Properties for user input
    private static string _input;
    private static long _inputConv;

    public static string InputOption
    {
        get { return _input; }
        set { _input = value; }
    }

    public static long InputConversion
    {
        get { return _inputConv; }
        set { _inputConv = value; }
    }

    public static void DisplayInstructionMenuAndSelectCalculatioType()
    {
        Console.WriteLine("What operation would you like to carry out?\n");
        Console.WriteLine("1. Addition\n" +
                          "2. Multiplication\n" +
                          "3. Subtraction\n" +
                          "4. Division");

        InputOption = Console.ReadLine();
        InputConversion = Convert.ToInt64(InputOption);
    }

    public static void UserInputForAdditionCalculation()
    {
        Console.WriteLine("*******ADDITION*******");
        Console.WriteLine("Enter number 1: ");
        InputOption = Console.ReadLine();
        AddNumberOne = Convert.ToInt64(InputOption);
        Console.WriteLine("Enter number 2: ");
        InputOption = Console.ReadLine();
        AddNumberTwo = Convert.ToInt64(InputOption);
        TotalAddition = AddCalculation(AddNumberOne, AddNumberTwo);
        Console.WriteLine("\n\nResult: {0} + {1} = {2}", AddNumberOne, AddNumberTwo, TotalAddition);
        Console.Write("Another calculation? YES/NO: ");
        InputOption = Console.ReadLine();
    }

    public static void UserInputForMultiplyCalculation()
    {
        Console.WriteLine("*******MULTIPLY*******");
        Console.WriteLine("Enter number 1: ");
        InputOption = Console.ReadLine();
        MulNumberOne = Convert.ToInt64(InputOption);
        Console.WriteLine("Enter number 2: ");
        InputOption = Console.ReadLine();
        MulNumberTwo = Convert.ToInt64(InputOption);
        TotalMultiply = MultiplyCalculation(MulNumberOne, MulNumberTwo);
        Console.WriteLine("\n\nResult: {0} x {1} = {2}", MulNumberOne, MulNumberTwo, TotalMultiply);
        Console.Write("Another calculation? YES/NO: ");
        InputOption = Console.ReadLine();
    }

    public static void UserInputForSubtractCalculation()
    {
        Console.WriteLine("*******SUBTRACT*******");
        Console.WriteLine("Enter number 1: ");
        InputOption = Console.ReadLine();
        MinNumberOne = Convert.ToInt64(InputOption);
        Console.WriteLine("Enter number 2: ");
        InputOption = Console.ReadLine();
        MinNumberTwo = Convert.ToInt64(InputOption);
        TotalMinus = MinusCalculation(MinNumberOne, MinNumberTwo);
        Console.WriteLine("\n\nResult: {0} - {1} = {2}", MinNumberOne, MinNumberTwo, TotalMinus);
        Console.Write("Another calculation? YES/NO: ");
        InputOption = Console.ReadLine();
    }

    public static void UserInputForDivisionCalculation()
    {
        Console.WriteLine("*******DIVISION*******");
        Console.Write("Enter number 1: ");
        InputOption = Console.ReadLine();
        DivNumberOne = Convert.ToInt64(InputOption);
        Console.Write("Enter number 2: ");
        InputOption = Console.ReadLine();
        DivNumberTwo = Convert.ToInt64(InputOption);
        TotalDivide = DivideCalculation(DivNumberOne, DivNumberTwo);
        Console.WriteLine("\n\nResult: {0} / {1} = {2}", DivNumberOne, DivNumberTwo, TotalDivide);
        Console.Write("Another calculation? YES/NO: ");
        InputOption = Console.ReadLine();
    }

    public static void DisplayMenuOrExitProgram()
    {
        switch (InputOption)
        {
            case "YES":
                DisplayInstructionMenuAndSelectCalculatioType();
                break;
            case "NO":
                RunProgram = false;
                break;
            default:
                RunProgram = false;
                break;
        }
    }

    public static void SwitchCalculationsAndDisplayResults()
    {
        while (RunProgram)
        {
            switch (InputConversion)
            {
                case 1:
                    UserInputForAdditionCalculation();
                    DisplayMenuOrExitProgram();
                    break;
                case 2:
                    UserInputForMultiplyCalculation();
                    DisplayMenuOrExitProgram();
                    break;
                case 3:
                    UserInputForSubtractCalculation();
                    DisplayMenuOrExitProgram();
                    break;
                case 4:
                    UserInputForDivisionCalculation();
                    DisplayMenuOrExitProgram();
                    break;
                default:
                    Console.WriteLine("Something went wrong, sorry");
                    break;
            }
        }
    }
}
}

这意味着您不使用后台字段,也不需要它,您的属性可以是

public static double MinNumberOne
{
    get; set;

}
Compile将为您创建后台字段


您不必担心,auto-prop是一种语法糖。

您可以创建一个较短的proeprity,名为
auto-Properties

public static long MulNumberOne { get; set; }
您可以保存几行代码,但编译器将在编译时生成相同的IL

类/结构的属性可以缩短为以下内容:

struct Calculator
{
    // Properties for returning addition numbers 
    public static long AddNumberOne { get; set; }
    public static long AddNumberTwo { get; set; }

    // Properties for returning multiplication numbers 
    public static long MulNumberOne { get; set; }
    public static long MulNumberTwo { get; set; }

    // Properties for returning division numbers
    public static double DivNumberTwo { get; set; }

    // Properties for returning minus numbers 
    public static double MinNumberOne { get; set; }
    public static double MinNumberTwo { get; set; }

    // Property for returning program run state 
    public static bool RunProgram { get; set; }

    // Properties for returning total after calculation is made 
    public static long TotalAddition { get; set; }
    public static long TotalMultiply { get; set; }
    public static double TotalDivide { get; set; }
    public static double TotalMinus { get; set; }

    // Properties for user input
    public static string InputOption { get; set; }
    public static long InputConversion { get; set; }

    // METHODS
}
这将在编译后生成相同的输出,但最好阅读IMO。

除了
\u add1
之外,您还需要在类内使用
AddNumberOne
,它也调用getter方法,速度稍微慢一些(仅在每秒>100k次调用时才起作用)。

您不必担心它。自动特性与您现在使用的特性相同,只是方式较短。当get和set访问器未更改时使用它们。 下面是代码中的一个示例:

public static double MinNumberOne
{
     get { return _min1; } set { _min1 = value; } 
}
这就是为什么。这是一个自动属性

public static double MinNumberOne { get; set; }
. 消息必须来自resharper。