如何在C#中使用const,readonly和static

了解C#中constreadonlystatic关键字之间的异同

如何在C#中使用const,readonly和static

在C#中编程时,经常使用关键字constreadonlystatic。但是,尽管这些关键字具有重要的区别,但它们也具有相似之处,有时很难知道何时使用哪个关键字。本文讨论C#中的conststaticreadonly关键字,它们如何比较以及如何在C#应用程序中使用它们。

在C#中使用const关键字

C#中的const(读取:常量)关键字用于定义常量变量,即,其值在程序生存期内不会更改的变量。因此,在声明常量时必须将值分配给常量。

常数变量的此值也称为“编译时”值。使用const关键字声明的变量也称为编译时常量。应该注意的是,常量是不可变的,即,分配给常量的值以后不能更改。

以下代码段说明了如何在C#中使用const关键字定义编译时常量。

const string connectionString = “在这里指定您的数据库连接字符串。” ;  

请注意,在定义常量变量时​​必须为其赋值。还要注意,您不能使用const关键字创建常量对象。const关键字只能应用于原始数据类型(例如,int,float,char和booleans)和字符串。让我们通过一个例子来理解const的用法。

考虑以下名为Author的类。为了使它简单,我们将只为Author类提供一些属性。

public class Author
    {
        public int Id { get; set; }
        public string FirstName { get; set; }
        public string LastName { get; set; }
        public string Address { get; set; }
    }

现在,如果您尝试使用const关键字创建Author类的常量对象,您将看到下面的图1所示的编译错误。

csharp const 01

此错误表明赋值运算符的右侧应具有一个恒定值,以满足表达式。由于该语句new Author()不是常量,因此赋值无效,从而导致错误。

在C#中使用readonly关键字

readonly关键字可用于将变量或对象定义为只读。这意味着可以在类作用域或仅在构造函数中为变量或对象分配值。您不能使用构造函数以外的任何其他方法来更改值或将值重新分配给只读变量或对象。

让我们通过一个例子来理解这一点。考虑以下名为DbManager的类。

public class DbManager
    {
        public readonly string connectionString =
        "Specify your database connection string here.";
        public DbManager()
        {
            connectionString = "You can reassign a value here.";
        }
        public void ReAssign()
        {
            connectionString = "This is not allowed";
        }
    }

上面的代码将无法编译,并且会显示图2所示的错误。

csharp只读02

在C#中使用static关键字

C#中的static关键字可用于变量,方法或对象。请注意,类的静态成员属于对象的类型,而不是该类型的实例。换句话说,使用类的名称(而不是实例的名称)访问静态成员。 

考虑以下名为Utility的类,其中包含静态方法。

public class Utility
    {
        public static void SomeMethod()
        {
            //Write your code here
        }
    } 

您不能SomeMethod()使用Utility类的实例来调用该方法。相反,您应该使用以下语法调用此方法。

Utility.SomeMethod();

相同的规则适用于静态变量或静态对象。您只能使用下面显示的语法来引用类的静态成员。

ClassName.Member;

或者

ClassName.Member();

类的构造函数可以是静态的。类的静态构造函数用于初始化类的静态成员。但是,类的静态构造函数不能接受参数。

constreadonlystatic的规则

这是使用constreadonlystatic关键字时可以遵循的经验法则。当变量中包含的值在应用程序的生存期内永不更改时,请使用const关键字。当您不确定是否需要更改对象变量的值,但又想防止其他类更改该值时,请使用readonly关键字。当您希望类的成员属于该类型而不是该类型的实例时,请使用static关键字

原创文章,作者:冰封一夏,如若转载,请注明出处:http://www.nncjzx.com/3180.html

关注本站公众号获取更多实时内容

本站微信公众号:二线码农