const 和 readonly 修饰符的用法

1. 只有C#内置类型(int,double,long等)可以声明为const;结果、类和数组不能声明为const。

2. readonly 是在字段上使用的修饰符,直接以类名.字段访问。

3. const 必须在申明中初始化。之后不能再修改。

4. readonly可以在申明中初始化,也可以在构造函数中初始化,其它情况不能修改。

namespace const_and_readonly
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Half a year have {0} Moths", Calendar.Moths/2); //直接类名.字段访问const字段
            Calendar test1 = new Calendar();
            Console.WriteLine("Every year has {0} weeks and {1} days", test1._weeks, test1._days);//readonly字段通过实例访问
            Calendar test2 = new Calendar(31, 4);
            Console.WriteLine("January has {0} weeks and {1} days", test2._weeks ,test2 ._days);
            Console.ReadKey();
        }
    }
    class Calendar
    {
        public const int Moths = 12;  //const必须在声明中初始化
        public  readonly int _days=365;   //readonly在声明中初始化
        public  readonly int _weeks;
        public Calendar()                   //readonly在构造函数内初始化
        {
            _weeks = 52;
        }
        public Calendar(int days,int weeks)  //readonly在构造函数内初始化
        {
            _days = days;
            _weeks = weeks;
        }
        public void setvalue(int days,int weeks)
        {
           // _days = days;  无法对只读字段赋值
            //_weeks = weeks; 无法对只读字段赋值
        }

    }

  

时间: 2024-08-02 16:06:04

const 和 readonly 修饰符的用法的相关文章

C# const和readonly修饰符的区别

const 的概念就是一个包含不能修改的值的变量.常数表达式是在编译时可被完全计算的表达式.因此不能从一个变量中提取的值来初始化常量.如果 const int a = b+1;b是一个变量,显然不能再编译时就计算出结果,所以常量是不可以用变量来初始化的. readonly 允许把一个字段设置成常量,但可以执行一些运算,可以确定它的初始值.因为 readonly 是在计算时执行的,当然它可以用某些变量初始化.readonly 是实例成员,所以不同的实例可以有不同的常量值,这使readonly更灵活

params修饰符的用法

params修饰符是用来声明参数数组允许向方法传递数量不定的自变量用的.事实上System.Console 类的 Write 和 WriteLine 方法是参数数组用法的典型示例.他们的声明方式如下: public class Console { public static void Write(string fmt, params object[] args) { } public static void WriteLine(string fmt, params object[] args)

java中修饰符及其用法

1. java中的修饰符 a. 权限修饰符 private,默认的,protected,public b. 状态修饰符 static,final c. 抽象修饰符 abstract 2. 类修饰符 public(访问控制符),将一个类声明为公共类,他可以被任何对象访问,一个程序的主类必须是公共类,一个.java文件中只能有一个public类,而且文件名必须与该类相同. 默认的,把一个类声明为默认的,可以被同一个包中的其他类使用. abstract,将一个类声明为抽象类,抽象类中可以有抽象方法,也

【java基础知识】【public、default、protected、private等修饰符的用法】

一直对于这些修饰符概念不是很清晰,趁实习生考核刚结束空出来的时间抓紧时间学习. 1.可以修饰成员变量和成员方法的修饰词有三个加一个缺省.它们的作用域使用如下: 作用域     当前类 同一package 子孙类 其他package public        √          √             √            √ protected   √          √             √            × friendly      √          √  

OC基础[email protected]后的修饰符及其用法小结

[email protected]后的修饰符 strong : 该属性值对应 __strong 关键字,即该属性所声明的变量将成为对象的持有者,等同于"retain" weak : 该属性对应 __weak 关键字,与 __weak 定义的变量一致,该属性所声明的变量将没有对象的所有权,并且当对象被释放之后,对象将被自动赋值nil,记住IBOutlet应该使用weakcopy : 和之前的copy一样,复制一个对象并创建strong关联assign : 对象不能使用assign,但原始

关于readonly修饰符

修饰字段: 1.值类型:不能修改值 2.引用类型:是指该字段引用的对象不可以修改,但是里面的内容是可以修改的! 示例: static void Main(string[] args) { Console.WriteLine(AContainer.c_a3.i); AContainer.c_a3.i = 10; Console.WriteLine(AContainer.c_a3.i); Console.ReadKey(); } public class A3 { public int i { ge

vue2.0修饰符sync用法

如果子组件是一个弹窗,我们想通过点击关闭按钮来关闭子组件弹窗,子组件弹窗的v-show由变量isVisible控制,这个变量通过props由父组件来注入, 而子组件无法改变props里面的变量的值,但可以通过sync修饰来实现,代码如下: 子组件: <button @click="close">关闭</button> export default { props: { isVisible: { type: Boolean, default: false } },

C# const与readonly的详细用法

1.使用const关键字声明常量字段和常量局部变量时,常量字段和常量局部变量不是变量且不能改变.==>常量在程序中是不能改变的,而变量是可以改变的.常量可以为数字.布尔值.字符串或 null 引用. 不要创建常量来表示你需要随时更改的信息. 不允许在常数声明中使用 static 修饰符. 2.readonly 关键字是可以在字段上使用的修饰符. 当字段声明包括 readonly 修饰符时,该声明引入的字段赋值只能作为声明的一部分出现,或者出现在同一类的构造函数中. readonly 关键字与 c

C#语言中的修饰符汇总

1. 访问修饰符 指定声明的类型和类型成员的可访问性. (1) public:对任何类和成员都公开, 无限制访问;是类型和类型成员的访问修饰符.公共访问是允许的最高访问级别.对访问公共成员没有限制. (2) private:仅仅对该类公开;是一个成员访问修饰符.私有访问是允许的最低访问级别.私有成员只有在声明它们的类和结 构体中才是可访问的. (3) internal:只能值包含该类的程序集中访问该类(只是单独的项目,而不是整个解决方案);是类型和类型成员的访问修饰符.只有在同一程序集的文件中,