readonly(C#)

1.readonly关键字是可以在字段上使用的修饰符。当字段生命包括readonly修饰符时,该声明引入的字段赋值只能作为声明的一部分出现,或者出现在同一类的构造函数中

2.在此实例中,字段year的值无法再ChangeYear方法中更改,即使在类构造函数中中给它赋了值。

    class Age
    {
        readonly int _year;
        Age(int year)
        {
            _year = year;
        }
        void ChangeYear()
        {
            //_year = 1967; // Compile error if uncommented.
        }
    }

3.只能在下列上下文中对readonly字段进行赋值:
(1)当在声明中初始化变量时,例如:public readonly int y=5;

(2)对于实例字段,在包含字段声明的类的实例构造函数中;或者,对于静态字段,在包含字段声明的类的静态构造函数中。也只有在这些上下玩中,将readonly字段作为out或ref参数传递有效。

(3)readonly 关键字与const关键字不同。const字段只能在该字段的声明中初始化。readonly字段可以在声明或构造函数中初始化。因此,根据所使用的构造函数,readonly字段可能具有不同的值。另外,const字段为编译时常数,而readonly字段可用于运行时常数,如下例所示:

public static readonly uint timeStamp=(uint)DateTime.Now.Ticks;

4.

    public class ReadOnlyTest
    {
       class SampleClass
       {
          public int x;
          // Initialize a readonly field
          public readonly int y = 25;
          public readonly int z;

          public SampleClass()
          {
             // Initialize a readonly instance field
             z = 24;
          }

          public SampleClass(int p1, int p2, int p3)
          {
             x = p1;
             y = p2;
             z = p3;
          }
       }

       static void Main()
       {
          SampleClass p1 = new SampleClass(11, 21, 32);   // OK
          Console.WriteLine("p1: x={0}, y={1}, z={2}", p1.x, p1.y, p1.z);
          SampleClass p2 = new SampleClass();
          p2.x = 55;   // OK
          Console.WriteLine("p2: x={0}, y={1}, z={2}", p2.x, p2.y, p2.z);
       }
    }
    /*
     Output:
        p1: x=11, y=21, z=32
        p2: x=55, y=25, z=24
    */

在前面的示例中,如果使用这样的语句:

p2.y = 66;        // Error

将收到编译器错误信息:

The left-hand side of an assignment must be an l-value

这与尝试将值赋给常数时收到的错误相同。

时间: 2024-10-09 18:55:44

readonly(C#)的相关文章

表单中Readonly和Disabled的区别

Readonly和Disabled是用在表单中的两个属性,它们都能够做到使用户不能够更改表单域中的内容.但是它们之间有着微小的差别,总结如下: Readonly只针对input(text / password)和textarea有效,而disabled对于所有的表单元素都有效,包括select, radio, checkbox, button等. 但是表单元素在使用了disabled后,当我们将表单以POST或GET的方式提交的话,这个元素的值不会被传递出去,而readonly会将该值传递出去(

copy, retain, assign , readonly , readwrite,strong,weak,nonatomic整理

copy:建立一个索引计数为1的对象,然后释放旧对象 对NSString对NSString 它指出,在赋值时使用传入值的一份拷贝.拷贝工作由copy方法执行,此属性只对那些实行了NSCopying协议的对象类型有效.更深入的讨论,请参考“复制”部分. retain:释放旧的对象,将旧对象的值赋予输入对象,再提高输入对象的索引计数为1对其他NSObject和其子类对参数进行release旧值,再retain新值指定retain会在赋值时唤醒传入值的retain消息.此属性只能用于Objective

declare的用法:定义环境变量;把环境变量修改为本地变量;是变量变为只读(和readonly一样)。

declare的法;  定义环境变量:declare -x 变量名 修改环境变量为本地变量: declare +x 环境变量名 使变量变为可读:declare -r 变量名 [[email protected] opt]# bb=10 [[email protected] opt]# declare -r bb //把变量变为可读(不能修改和删除) [[email protected] opt]# bb=20 bash: bb: readonly variable [[email protect

使用js设置input标签只读 readonly 属性

先上代码: <html> <head> <title> test </title> <meta charset="utf-8"> </head> <script language="JavaScript"> function setReadonly() { //document.getElementById("test").setAttribute("r

html input readonly 和 disable的区别

Readonly和Disabled它们都能够做到使用户不能够更改表单域中的内容.但是它们之间有着微小的差别,总结如下: Readonly只针对input(text / password)和textarea有效,而disabled对于所有的表单元素都有效,但是表单元素在使用了disabled后,当我们将表单以POST或GET的方式提交的话,这个元素的值不会被传递出去,而readonly会将该值传递出去(readonly接受值更改可以回传,disable接受改但不回传数据). 一般比较常用的情况是:

[c#] const 与 readonly

c# 中 const 与 readonly 关键字看似相同,实则不同.重点在于确定值的时间. const const 很简单,就是一个常量,不可以被 static 修饰,因为被 const 修饰的字段自动成为静态字段,其值是在编译时可以确定的. readonly readonly 可以修饰实例字段(不被 static 修饰的字段),也可以修饰静态字段(被 static 修饰的字段).意指为"只读".其值确定的时间在类的构造函数中. 总结 关键字 确定值的时机 const 编译时 rea

readonly属性在各浏览器中的区别

有个项目需求是正常显示时为只读,不可修改: 点击修改按钮后,可修改表单元素. 首先想到的是readonly属性,其用于规定输入字段为只读,不能修改.在javascript中消除readonly值,可将输入字段切换为可编辑状态.如下面的写法 <input type="text" name="email" readonly="readonly"> 写完后在浏览器中测试时发现如下: IE浏览器:可以获得焦点,光标可进入,但不能输入.获得焦点

const和readonly

const:常量,编译时即需要确定值 readonly:只读变量,运行时确定值 1 class ConstReadonlyTest 2 { 3 //const String str;//错误:常量字段定义时需要指定初始值 4 //const Object obj = new Object();//错误:常量字段不能使用new初始化,表达式必须是常量(字符串可以) 5 //const Object obj = new StructTest();//错误:表达式必须是常量不能使用new初始化(即使是

mysql 从库设置read-only 对super权限的用户无效的问题

由于在测试mysql主从读写分离的时候,用root用户设置从库为read-only ,但是重启生效后发现,root用户照样可以进行update insert ,此时root用有all privilege权限,包括super(管理)权限 测试单独回收revoke root的super权限后再试,发现root此时 已经不能写操作了 因此在给普通用户,或区分读写分离用户时,注意要回收super权限,否则对read-only无效. 另外为了防止普通用户对从库进行插入,在给用户分配权限时要回收super权

&lt;input&gt;标签的readonly属性

readonly属性的定义和用法: 此属性只能在<input type="text">或<input type="password">中使用,能够将它们设置为只读. 被设置为只读的字段不能够被修改,但是可以复制和被tab键切换到. 语法结构: <input readonly="value"> 属性值列表: 属性值 描述 readonly 将字段设置为只读. 浏览器支持: IE浏览器支持此属性. 火狐浏览器支持此