第一个是赋值。
后面的是属性Property的设置方法。name应该是private的,Name才是Public的
后面的是属性Property的设置方法。name应该是private的,Name才是Public的
解决方案 »
- 用visual studio编写c#程序
- 想了解下C#学习路径
- C# ,SerialPort的DataReceived事件,使用问题?
- 关于网站自动登陆,再自动签收工单
- 除了fixedsys和consolas之外,还有哪些true type字体,0字中间带有斜杠的呢?
- 在C#应用程序中,添加web引用,出现自定义工具警告: DiscoCodeGenerator 无法初始化代码生成器,没有生成任何代码.
- 焦点移动问题
- 请问用vs2005开发webservice的问题??
- c#如何让Form获得焦点(比如俄罗斯方块)
- 在程序中调用API???
- WPF程序启动新进程但是任务栏有两个图标
- 怎么像数据库录入二进制图片数据?
set
{
name =value ;
}
等同于
void SetName(string value)
{
name =value ;
}get
{
return name;
}
等同于
string GetName()
{
return name;
}
再来逐一回答你的问题:
1.st.Name="luo"===》因为是赋值,那执行的就是set里面的代码name =value ;
2.public string name;与public string Name{}不一样,一个是变量一个是属性(你可以认为是方法)
3.这段什么意思啊,怎么感觉这是函数啊。?set,get,vlaue这又是什么啊??===》最开始已经回答你了。
就是给学生实例st的名字属性赋值的意思。2public string Name这句话不是定义一个共有的变量吗?
这么写是有问题的,作为成员还是用private隐藏起来,外部只能通关过Name属性来访问这个成员。
st.Name = "luo";
Console.WriteLine(st.Name);
这段代码就是实例化一个学生对象,然后给这个学生赋上名字,console那句只是显示赋值后的效果。
public class student
{
public string name;
public string Name
{
get
{
return name;
}
set
{
name =value ;
}
}
}
这个定义类学生类。有1个成员和1个属性。
public string name; 这里应该改成私有。
外部要给学生名字赋值和读取名字都要通过属性来进行。
属性术语特殊方法,里面有set,get操作元,可以做一些逻辑控制,还可以做异常捕获等等。
get操作元用于外部获取属性值;set操作元用于外部给属性赋值,其中的value就是外部付给的值,它的类型就是属性类型。
{
public string Name;
}然后针对字段 Name 进行读写。等你过一段时间,发现需要将 Name 的读写变为函数/方法,以便扩展其功能。例如如果有人输入了小写字母,你想把第一个字符变为大写。你这时候可以直接改写为public class student
{
public string name;
public string Name
{
get
{
return name;
}
set
{
name =value ;
if(name.Length>0)
{
string x = name.SubString(0,1).ToUpper();
if(name.Length>1)
x += name.SubString(1);
name = x;
}
}
}
}这时候,你只需要修改这一处代码,原来使用 Name 字段的代码都不用修改,直接使用 Name 属性就行了。
public void setName(string name) { ...... }然后用的时候是这样的string name = person.getName();
person.setName(name);C# 是这样的:public string Name { get; set; }string name = person.Name;
person.Name = name;
你觉得哪一个看上去更自然呢?!
但是相对于字段,属性能提供更细粒度的访问限制(只读:删掉set,只写:删掉get)
并且能在设置时检验数据有效性,或者进行一些转换,因为st.Name="luo"实际上运行了一个方法
效率问题不用担心,如果方法很小的话编译器会隐式内联
private string id = "";//定义一个string类型的变量,用来记录用户编号
private string name = "";//定义一个string类型的变量,用来记录用户姓名
/// <summary>
///定义用户编号属性,该属性为可读可写属性
/// </summary>
public string ID
{
get
{
return id;
}
set
{
id = value;
}
}
/// <summary>
///定义用户姓名属性,该属性为可读可写属性
/// </summary>
public string Name
{
get
{
return name;
}
set
{
name = value;
}
}