int字段的默认值是0吗?

时间:2012-09-06 07:45:28

标签: c# console-application

我有一个控制台应用程序,其中包含以下代码:

    using System;

    namespace HeadfirstPage210bill
    {
        class Program
        {
            static void Main(string[] args)
            {
                CableBill myBill = new CableBill(4);
                Console.WriteLine(myBill.iGotChanged);
                Console.WriteLine(myBill.CalculateAmount(7).ToString("£##,#0.00"));
                Console.WriteLine("Press enter to exit");
                Console.WriteLine(myBill.iGotChanged);
                Console.Read();
            }
        }
    }

CableBill.cs类如下:

    using System;

    namespace HeadfirstPage210bill
    {
        class CableBill
        {
            private int rentalFee;
            public CableBill(int rentalFee) {
                iGotChanged = 0;
                this.rentalFee = rentalFee;
                discount = false;
            }

            public int iGotChanged = 0;


            private int payPerViewDiscount;
            private bool discount;
            public bool Discount {
                set {
                    discount = value;
                    if (discount) {
                        payPerViewDiscount = 2;
                        iGotChanged = 1;
                    } else {
                        payPerViewDiscount = 0;
                        iGotChanged = 2;
                    }
                }
            }

            public int CalculateAmount(int payPerViewMoviesOrdered) {
                return (rentalFee - payPerViewDiscount) * payPerViewMoviesOrdered;
            }

        }
    }

控制台返回以下内容:

enter image description here

payPerViewDiscount设置为0时,我看不到。当然,这只能在设置了Discount属性时发生,但如果调用属性Discount,则变量iGotChanged应该返回1或2,但它似乎保持为0.因为类型为intpayPerViewDiscount的默认值是0吗?

4 个答案:

答案 0 :(得分:10)

是的,int的默认值为0,您可以使用default关键字检查

int t = default(int);

t将保留0

答案 1 :(得分:3)

在构造函数运行之前,类中的字段被初始化为其默认值。 int的默认值为0.

请注意,这适用于本地变量,例如在方法。它们不会自动初始化。

public class X
{
    private int _field;

    public void PrintField()
    {
        Console.WriteLine(_field); // prints 0
    }

    public void PrintLocal()
    {
        int local;
        Console.WriteLine(local); 
        // yields compiler error "Use of unassigned local variable 'local'"
    }
}

答案 2 :(得分:2)

完全。 int默认值为0

答案 3 :(得分:2)

是,零是int的默认值。