小弟最近对于C#中的语法使用有些疑问希望执教。
例如:小弟定义一个类,但是我不确定什么时候采用属性与外界联系,什么时候使用变量与外界联系。也就是说
public string A{get; set}和public string A在使用上有什么区别吗?
还有什么时候需要用构造函数初始化变量,既然使用属性获取参数,那么为什么还要用构造函数初始化变量?
还有定义具有什么特点的方法时需要为方法增加参数?
谢谢大家!
例如:小弟定义一个类,但是我不确定什么时候采用属性与外界联系,什么时候使用变量与外界联系。也就是说
public string A{get; set}和public string A在使用上有什么区别吗?
还有什么时候需要用构造函数初始化变量,既然使用属性获取参数,那么为什么还要用构造函数初始化变量?
还有定义具有什么特点的方法时需要为方法增加参数?
谢谢大家!
解决方案 »
- 文本超链接如何传参并弹出固定大小页面?
- 这个基类、派生类、析构函数考试题!急,跪求呀!!!!
- C#連接ORACLE時發生了錯誤,無法open,但是try catch無法取得錯誤的信息,求助高手
- 读取16进制文件的问题
- 各位高手请指点,有没有免费的VS.NET2005中文版下载,很急需要,这里买不到,谢谢你们了!
- 如何把一个类实例转换成类名字符串指定的类型,走过路过不要错过。
- RadioButton中的text如何转换成int32?
- 各位救救我:[可能是你们没有碰到过的哦]有关.NET开发的事,向你求助
- c#的dll注册
- 第一次遇到VS2013调试环境执行错误而单独运行成功
- 请教一个基础问题:几种类型转换有什么区别?请高人给个详解。
- 求高手帮帮忙!关于发送短信的问题,在线等啊,分全散了
-----------------------------
一般来说,不将属性设为public,这样会破坏类的封装性,要是要设置值的话,用set get能提高程序的健壮性
这样写当然没区别,但是像这样:
private string a;
public string A{
get{
if(...条件) return a;
else return "";
}
set{
if(value == null)
this.a = "";
else
this.a = value;
}
}get与set不单单可以设置或返回值, 而且在设置返回前可以做手脚, 这些动作是隐藏的. 但如果直接用public string a; 别人通过直接访问a数据成员, 那么什么动作都不能做, a是什么值就返回什么值; 这部分是.net比java多做的封装性.不过现在java的设计模式也越来越多使用getter和setter, 比如:
private string a;
public getA{ ... }
public setA{ ... }java的getter,setter 与 C#的属性 public A { get{..} set{..} } 比较起来, 不论在程序清晰可读和使用上, 都差远了.
public string a{get;set;}就是你给别人一个方法来用你自家的东西,借与不借你可以控制。
public string A{get; set}和public string A
-----------------------------
一般来说,不将属性设为public,这样会破坏类的封装性,要是要设置值的话,用set get能提高程序的健壮性
===============================
通过property进行读取可以提高对象的封装性和安全性,还有一个重要的问题是:假如你的读取逻辑发生变化时,对外的接口(property)不需要发生变化