以下三种访问属性方法的有区别吗?如果有请说明什么区别?using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
Demo demo = new Demo();
demo.number = 1;
Console.WriteLine("第一种访问方式获取值:" + demo.number.ToString());
demo.setNum(2);
Console.WriteLine("第二种访问方式获取值:" + demo.getNum().ToString());
demo.Number = 3;
Console.WriteLine("第三种访问方式获取值:" + demo.Number.ToString());
}
}
public class Demo
{
public int number = 0;
public void setNum(int p_number)
{
number = p_number;
}
public int getNum()
{
return number;
}
public int Number
{
set
{
number = value;
}
get
{
return number;
}
}
}
}
using System.Collections.Generic;
using System.Linq;
using System.Text;namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
Demo demo = new Demo();
demo.number = 1;
Console.WriteLine("第一种访问方式获取值:" + demo.number.ToString());
demo.setNum(2);
Console.WriteLine("第二种访问方式获取值:" + demo.getNum().ToString());
demo.Number = 3;
Console.WriteLine("第三种访问方式获取值:" + demo.Number.ToString());
}
}
public class Demo
{
public int number = 0;
public void setNum(int p_number)
{
number = p_number;
}
public int getNum()
{
return number;
}
public int Number
{
set
{
number = value;
}
get
{
return number;
}
}
}
}
解决方案 »
- 用GDI+如何设计一款荧光笔
- 奇怪問題。程序拋出異常後,還能繼續往下執行。為何這樣?
- 客户端 -- 门户 ,之间的问题,怎么实现客户端调用门户的方法?
- ****如何将EBCDIC码转换为ASCII码?
- 请问有什么免费的很好的动态域名解析软件,介绍下怎么试用。。。
- 数据绑定后遇到无法翻页的问题
- 那位熟悉C#的消息机制啊,给分给钱求助啊!!!!!!!
- 为何WebBrowser的InvokeScript方法执行之后没有任何反应?
- 关于一段50行的C++代码,求翻译
- 如何根据字符串生成响应类的实例?
- [c#]请问switch语句中可以用正则表达式吗
- winform 下TEXTBOX 失去焦点是什么事件
把所有的字段都设为私有字段,则把它们封装成属性,字段就是作用于整个类的变量
字段是被视为类的一部分的对象的实例,通常用于保存类数据
private static string name="";
属性特殊的类成员
public class Student
{
private string name;
public string Name
{
get { return name; }
set { name = value; }
}
}
public class Demo
{
private int number = 0;
public int Number
{
set
{
number = value;
}
get
{
return number;
}
}
}如果没区别那以上这种写法是不是有点多余?
何不直接写成public int number;难道只能理解成代码规范性?
哦,
那这种呢? public void setNum(int p_number)
{
number = p_number;
}
public int getNum()
{
return number;
}
以后就直接使用如下所写即可,
private int number = 0;
public int Number
{
set
{
number = value;
}
get
{
return number;
}
}
在.NET2.0下,类内部使用字段或者属性,外部只能使用属性,隐藏了字段。正如某仁兄所说,结果一样。不过上述的写法并不见得就很好,呵呵,至少不是线程安全的,这个我就不多说是为什么了。如果你学过面向对象,或者明白面向对象,那么这个问题对你来说应该没任何意义的。
OO中的封装,字段都设置为私有,外部访问提供接口(属性,方法)
这样,你在方法或属性中还可以对字段进行检查等操作。 属性的实质是方法(get和set方法)
protected void setNum(int p_number)
{
number = p_number;
}
public int getNum()
{
return number;
}这个算不算一个区别?
我还是那么说,从效果上来说,没区别啊。从实现上说,也没有,只是习惯问题。但如果是站在OO的基础上来说,就有区别了啊。至于是什么区别,自己看了OO自然就明白了啊,这个不是一句两句可以说清的事情。