【001:C# 中 get set 简写存在的陷阱】

如下代码:

 1 public class Age
 2     {
 3
 4         private int ageNum ;
 5
 6         public int AgeNum {
 7             get{
 8                 return this.ageNum;
 9             }
10
11             set{
12                 this.ageNum = value;
13             }
14         }
15
16         public int getAgeNum(){
17             return ageNum;
18         }
19
20         public void setAgeNum(int age){
21             this.ageNum = age;
22         }
23
24     }

在Main中做如下操作:

1     Age age = new Age ();
2     age.setAgeNum (234);
3     Console.WriteLine ("age=" + age.AgeNum);
4
5     age.AgeNum = 122;
6     Console.WriteLine ("age=" + age.getAgeNum());

输出:

age=234
age=122

但如果将 set get 采用简写方式,代码如下

public class Age
    {

        private int ageNum ;

        public int AgeNum { set; get;
        }

        public int getAgeNum(){
            return ageNum;
        }

        public void setAgeNum(int age){
            this.ageNum = age;
        }

    }

Main中内容不变,得到如下结果

age=0
age=234

如果修改Main中代码顺序如下

1 age.AgeNum = 122;
2 Console.WriteLine ("age=" + age.getAgeNum());
3
4 age.setAgeNum (234);
5 Console.WriteLine ("age=" + age.AgeNum);

结果为

age=0
age=122

时间: 2024-12-29 10:36:42

【001:C# 中 get set 简写存在的陷阱】的相关文章

python 中特殊方法简写方式

##python 中特殊方法简写方式 class Test: __call__ = lambda *args: args[1] * 2 #这里需要注意lambda的参数 会默认将实例self 加进去 __str__ = lambda self: 'that`s useful...%s' % self.__class__.__name__ t = Test() print(t) print(t(10)) 原文地址:https://www.cnblogs.com/alplf123/p/1029388

python中from module import * 的一个陷阱

from module import *把module中的成员全部导到了当前的global namespace,访问起来就比较方便了.当然,python style一般不建议这么做,因为可能引起name conflict. 但还有另外一个问题 - 你以为你修改了某个变量,其实,被from module import *后的那个并没有被更新,非常危险,因为程序有可能还可以正常运行, 只不过结果错了,到了production才被发现就比较惨了. 举个例子: 你定义了一些变量在base模块中: # r

HTML中的颜色简写

1.HTML中颜色的五种写法 1)直接用颜色英文名字表示 例如表示背景颜色为白色: 2.通过16进制数表示 例如表示背景颜色为黑色 3).通过RGB方式表示 RGB:是红色(red)绿色(green)蓝色(blue)三种颜色的英文字母的首字母,取值范围在0-255之间,有三个参数值 表示背景颜色为黄色 具体详细数值见图片1 4).通过百分比的方式表示 三个数值都是基于255的百分比值,效果等同于方法3 例如:background-color: rgb(29%,50%,67%); 5).采用rgb

[erlang 001]erlang中的错误及异常处理

一. erlang中的错误 1. 分类     1) 编译错误:主要是编译器检测出的代码语法错误:     2) 逻辑错误:是指程序没有完成预期的工作,属于开发人员的问题:     3) 运行时错误:是指erlang运行时抛出的错误,比如对非数据类型执行算术运算,erlang运行时会捕获异常,并抛出.在erlang中,这类异常的类型为error:     4) 用户代码生成的错误:是指通过exit/1或者throw/1生成. 2. 异常 我们把运行时错误以及用户抛出的错误称为异常(excepti

001.java中static的作用

static的作用: 1.将对象层级提升为类层级 (即将对象可以调用的,提升为对象和类均可调用的成员):   //推荐使用类来调用   ClassNme.静态成员 (包括变量.方法.成员对象) 2.static修饰的成员,在类加载时即准备完成,而不需要创建对象:   //类加载只做一次:1  类名. 的时候会类加载; 2  new 对象时会类加载 3.静态成员方法只能访问静态成员,不能访问非静态成员(因为调用该方法时可能还没有创建对象):    而非静态成员方法既能访问非静态成员,又能访问静态成

001 Java中&与&&的区别

1.&& &&是逻辑“与”运算符,其两侧的操作数都为true时整个表达式的值才能为true,两侧的操作数只要有一个为false则整个表达式的值为false.而且,&&具有“短路”功能,也即当第一个操作数为false,则整个&&表达式的值为false(不用去判断第二个操作数为true还是false.这个知识点有时会出现在各种考试中,如:当第二个操作数是一个有计算操作的表达式时,则其计算操作被忽略) 2.& &既可以做逻辑“与”运

20170223-问题001,增强中的E消息 显示为 S模式消息,

MM01 的屏幕增强,里面写的      MESSAGE e056(z1) WITH '供应链计划(SCP) 储备物料与当期物料不能同时选择.'.可是现实出来是S 消息模式,这是为什么?系统转换了吗?

java集合中的一个移除数据陷阱(遍历集合自身并同时删除被遍历数据)

下面是网上的其他解释,更能从本质上解释原因:Iterator 是工作在一个独立的线程中,并且拥有一个 mutex 锁. Iterator 被创建之后会建立一个指向原来对象的单链索引表,当原来的对象数量发生变化时,这个索引表的内容不会同步改变,所以当索引指针往后移动的时候就找不到要迭代的对象,所以按照 fail-fast 原则 Iterator 会马上抛出 java.util.ConcurrentModificationException 异常.所以 Iterator 在工作的时候是不允许被迭代的

C++中前置声明的应用与陷阱

前置声明的使用 有一定C++开发经验的朋友可能会遇到这样的场景:两个类A与B是强耦合关系,类A要引用B的对象,类B也要引用类A的对象.好的,不难,我的第一直觉让我写出这样的代码: // A.h #include "B.h" class A { B b; public: A(void); virtual ~A(void); }; //A.cpp #include "A.h" A::A(void) { } A::~A(void) { } // B.h #include