当前位置:首页 » 密码管理 » getset访问器

getset访问器

发布时间: 2022-05-18 09:25:59

⑴ C#中的get和set访问器怎么理解和使用

转自http://soriq.100steps.net/blog/index.php
属性的访问器包含与获取(读取或计算)或设置(写)属性有关的可执行语句。访问器声明可以包含 get 访问器或 set 访问器,或者两者均包含。声明采用下列形式之一:

get {}

set {}

get 访问器
get 访问器体与方法体相似。它必须返回属性类型的值。执行 get 访问器相当于读取字段的值。以下是返回私有字段 name 的值的 get 访问器:

private string name; // the name field
public string Name // the Name property
{
get
{
return name;
}
}
当引用属性时,除非该属性为赋值目标,否则将调用 get 访问器读取该属性的值。例如:

Employee e1 = new Employee();
...
Console.Write(e1.Name); // The get accessor is invoked here
get 访问器必须在 return 或 throw 语句中终止,并且控制不能超出访问器体。

set 访问器
set 访问器与返回 void 的方法类似。它使用称为 value 的隐式参数,此参数的类型是属性的类型。在下例中,set 访问器被添加到 Name 属性:

public string Name
{
get
{
return name;
}
set
{
name = value;
}
}
当对属性赋值时,用提供新值的参数调用 set 访问器。例如:

e1.Name = "Joe"; // The set accessor is invoked here
在 set 访问器中对局部变量声明使用隐式参数名 (value) 是错误的。

备注
属性按如下方式,根据所使用的访问器进行分类:

只带有 get 访问器的属性称为只读属性。无法对只读属性赋值。
只带有 set 访问器的属性称为只写属性。只写属性除作为赋值的目标外,无法对其进行引用。
同时带有 get 和 set 访问器的属性为读写属性。
在属性声明中,get 和 set 访问器都必须在属性体的内部声明。

使用 get 访问器更改对象的状态是一种错误的编程样式。例如,以下访问器在每次访问 number 字段时都产生更改对象状态的副作用。

public int Number
{
get
{
return number++; // Don't do this
}
}
可以将 get 访问器用于返回字段值,或用于计算字段值并将其返回。例如:

public string Name
{
get
{
return name != null ? name : "NA";
}
}
在上述代码段中,如果不对 Name 属性赋值,它将返回值 NA。

示例 1
此例说明如何访问基类中被派生类中具有同一名称的另一个属性隐藏的属性。
// property_hiding.cs
// Property hiding
using System;
public class BaseClass
{
private string name;
public string Name
{
get
{
return name;
}
set
{
name = value;
}
}
}

public class DerivedClass : BaseClass
{
private string name;
public new string Name // Notice the use of the new modifier
{
get
{
return name;
}
set
{
name = value;
}
}
}

public class MainClass
{
public static void Main()
{
DerivedClass d1 = new DerivedClass();
d1.Name = "John"; // Derived class property
Console.WriteLine("Name in the derived class is: {0}",d1.Name);
((BaseClass)d1).Name = "Mary"; // Base class property
Console.WriteLine("Name in the base class is: {0}",
((BaseClass)d1).Name);
}
}
输出
Name in the derived class is: John
Name in the base class is: Mary
以下是上例中显示的重点:
派生类中的属性 Name 隐藏基类中的属性 Name。在这种情况下,派生类的该属性声明使用 new 修饰符:
public new string Name
{
...
转换 (BaseClass) 用于访问基类中的隐藏属性:
((BaseClass)d1).Name = "Mary";

⑵ C#属性定义。GET与SET访问器是怎么一回事,

1.属性的声明
总的来说,只要注意属性声明或者在使用是的一些规定就可以了,还有最为重要的:属性的操作过程。
声明是用如下语法:

类型 属性名 {访问器声明}

注意:属性还可以跟方法一样有参数,当然限制的是,参数必须是值参数外,参数的列表的声明与方法的一样。
访问器包括包含get访问器和set访问器

2.get访问器
get访问器相当于一个无参数方法,该方法具有属性类型的返回值以及属性相同的修饰符,而执行get访问器就是相当于读取了字段的值。需要注意的是,在get访问器中,返回值作为属性值提供给调用表达式。
例如:

private int a ;
public int A
{
get{return a;}
}

注意:当引用属性时,除非该属性为赋值目标,否则将调用get访问器读取该属性的值。(在没看到上面这句话之前,也很疑惑,调用时怎么让对象知道是get呢,还是set呢?)

3.set访问器
set访问器相当于一个void方法,该方法具有单个属性类型的值参数,以及包含属性相同的修饰符。
在set访问器中,新的属性值通过set访问器的参数传递。值得注意的是,在通过新的属性值赋值给字段时,显示参数传递必须声明为与该属性相同的数据类型,当然也可以使用隐式参数,不加声明时,编译器将使用隐式参数Value来表示赋给属性的新值。set访问器隐式具有名为value的参数(value),此参数的类型是属性的类型。
例如:
private int a ;
public int A
{
set{a=value;}
}
属性按如下方式,根据所使用的访问器进行分类:
只带有get访问器的属性称为只读属性。无法对只读属性赋值。
只带有set访问器的属性称为只写属性。只写属性除作为赋值的目标外,无法对其进行引用。
同时带有get和set访问器的属性为读写属性!
注意:在属性声明时,get和set访问器都必须在属性体内部声明。
4.调用get访问器在概念上等效于读取字段的值。但是并不是单单被编写成只有返回存储在字段中的值,事实上可以通过访问多个字段的值来计算出用户所需要的值,然后作为返回值,返回调用的表达式。
例如:
private int a ;
private int b ;
public int AAA
{
get{return (a*b/10)}
}

⑶ c#get和set用法详解

1、当引用属性时,除非该属性为赋值目标,否则将调用get访问器读取该属性的值。

例如:Employeee1=newEmployee();...Console.Write(e1.Name);//

访问器必须在return或throw语句中终止,并且控制不能超出访问器体。

2、set访问器与返回void的方法类似,它使用称为value的隐式参数,此参数的类型是属性的类型。

set访问器被添加到Name属性:

publicstringName

{

get{returnname;}

set{name=value;}

}

当对属性赋值时,用提供新值的参数调用set访问器。

例如:e1.Name="Joe";//Thesetaccessorisinvokedhere在set访问器中对局部变量声明使用隐式参数名(value)是错误的。

(3)getset访问器扩展阅读

get的使用

publicclassCar

{

publicstringColor

{

get{

if(this.viewstate["color"]!=null)

{

returnthis.viewstate["color"];

}

return"":

}

set{this.viewstate["color"];=value;}

}

}

⑷ 谁来简单说说C#中get {}set {}是什么回事,怎么用

属性的访问器包含与获取(读取或计算)或设置(写)属性有关的可执行语句。访问器声明可以包含 get 访问器或 set 访问器,或者两者均包含;
自己的理解:就相当于 类里的字段 要设置成私有的(比如name),但是别的要访问你 然后就弄了公有的字段(Name),这样别人就可以访问你。这个公有的字段其实是对应类里的私有字段;一个过渡一样的作用;给Name赋值,其实就是给name赋值,取Name其实就是取name;体现一种封装的思想;大概意思就是这样,可能描述的不是很专业。你再对应的看一段程序,就会明白了
using System;
public class BaseClass
{
private string name;
public string Name
{
get
{
return name;
}
set
{
name = value;
}
}
}

public class DerivedClass : BaseClass
{
private string name;
public new string Name // Notice the use of the new modifier
{
get
{
return name;
}
set
{
name = value;
}
}
}

public class MainClass
{
public static void Main()
{
DerivedClass d1 = new DerivedClass();
d1.Name = "John"; // Derived class property
Console.WriteLine("Name in the derived class is: {0}",d1.Name);
((BaseClass)d1).Name = "Mary"; // Base class property
Console.WriteLine("Name in the base class is: {0}",
((BaseClass)d1).Name);
}
}

⑸ C#中的get和set访问器怎么理解和使用求解答

C#为了提高安全性, 推荐将私有变量进行封装, 外界通过属性来访问私有成员变量, 他提供了两个访问其
get访问其是获取成员变量里的值, set访问其是存入值

⑹ 我是一个c#的初学者,对于get访问器和set访问器的作用不太明白,请知道的朋友帮我讲一下,谢谢!

get和set是一种特定的方法,get用来从对象中读取数据,而set用来向字段写入数据,
将外界的数据写入字段时,c#使用value表示输入的数据。
属性的读写控制
属性中的get和set可以只用一个,如果只有get而没有set,那么这个属性只可读出,不可写入;
如果只有set而没有get,那么这个属性是只写入,不可读出。
设计字段是为了便于内部方法使用,而尽量与外界隔绝;
设计属性考虑的是方便外界的使用,但是不让外界知道的数据一律不给。

⑺ c#中的get set 是什么意思,我需要最详细的解释。

属性的访问器包含与获取(读取或计算)或设置(写)属性有关的可执行语句。访问器声明可以包含 get 访问器或 set 访问器,或者两者均包含。声明采用下列形式之一:

get {}

set {}

get 访问器
get 访问器体与方法体相似。它必须返回属性类型的值。执行 get 访问器相当于读取字段的值。以下是返回私有字段 name 的值的 get 访问器:

private string name; // the name field
public string Name // the Name property
{
get
{
return name;
}
}
当引用属性时,除非该属性为赋值目标,否则将调用 get 访问器读取该属性的值。例如:

Employee e1 = new Employee();
...
Console.Write(e1.Name); // The get accessor is invoked here
get 访问器必须在 return 或 throw 语句中终止,并且控制不能超出访问器体。

set 访问器
set 访问器与返回 void 的方法类似。它使用称为 value 的隐式参数,此参数的类型是属性的类型。在下例中,set 访问器被添加到 Name 属性:

public string Name
{
get
{
return name;
}
set
{
name = value;
}
}
当对属性赋值时,用提供新值的参数调用 set 访问器。例如:

e1.Name = "Joe"; // The set accessor is invoked here
在 set 访问器中对局部变量声明使用隐式参数名 (value) 是错误的。

备注
属性按如下方式,根据所使用的访问器进行分类:

只带有 get 访问器的属性称为只读属性。无法对只读属性赋值。
只带有 set 访问器的属性称为只写属性。只写属性除作为赋值的目标外,无法对其进行引用。
同时带有 get 和 set 访问器的属性为读写属性。
在属性声明中,get 和 set 访问器都必须在属性体的内部声明。

使用 get 访问器更改对象的状态是一种错误的编程样式。例如,以下访问器在每次访问 number 字段时都产生更改对象状态的副作用。

public int Number
{
get
{
return number++; // Don't do this
}
}
可以将 get 访问器用于返回字段值,或用于计算字段值并将其返回。例如:

public string Name
{
get
{
return name != null ? name : "NA";
}
}
在上述代码段中,如果不对 Name 属性赋值,它将返回值 NA。

示例 1
此例说明如何访问基类中被派生类中具有同一名称的另一个属性隐藏的属性。

// property_hiding.cs
// Property hiding
using System;
public class BaseClass
{
private string name;
public string Name
{
get
{
return name;
}
set
{
name = value;
}
}
}

public class DerivedClass : BaseClass
{
private string name;
public new string Name // Notice the use of the new modifier
{
get
{
return name;
}
set
{
name = value;
}
}
}

public class MainClass
{
public static void Main()
{
DerivedClass d1 = new DerivedClass();
d1.Name = "John"; // Derived class property
Console.WriteLine("Name in the derived class is: {0}",d1.Name);
((BaseClass)d1).Name = "Mary"; // Base class property
Console.WriteLine("Name in the base class is: {0}",
((BaseClass)d1).Name);
}
}

输出
Name in the derived class is: John
Name in the base class is: Mary
以下是上例中显示的重点:
派生类中的属性 Name 隐藏基类中的属性 Name。在这种情况下,派生类的该属性声明使用 new 修饰符:
public new string Name
{
...
转换 (BaseClass) 用于访问基类中的隐藏属性:
((BaseClass)d1).Name = "Mary";

⑻ set和get在函数中起的什么作用

get 属性访问器用于返回属性值,而 set 访问器用于分配新值。这些访问器可以有不同的访问级别。有关更多信息,请参见访问器可访问性。

value 关键字用于定义由 set 索引器分配的值。

不实现 set 方法的属性是只读的。

----------------------------------------------------------------------------------------------
这是定义类的属性或索引的
这样的话,你就可以 Food.Pos来设置或获得类Food的Pos属性
一般是这样定义的
private Point pos;
private Image blockFood = Image.FromFile("images/block01.gif");

public Point Pos
{
get
{
return pos;
}
set
{
pos = value;
}
}
类里面的变量一般处于安全性考虑建议不要设置成Public的,但是如果在别的类里面要给private的pos赋值怎么办?
这样就可以用类的属性来实现
Food.Pos=new Point(10,10);
你还可以在set访问器里面进行判断操作
public Point Pos
{
get
{
return pos;
}
set
{
if (pos.X > 10 && pos.Y > 10)
{
pos = value;
}
else
{
pos = new Point(10,10);
}
}
}

⑼ 为什么提倡用get/set访问器来访问对象的内部数据

1. 良好的封装能够减少耦合。
2. 类内部的结构可以自由修改。
3. 可以对成员变量进行更精确的控制。
4. 隐藏信息,实现细节。这就是java的封装。

⑽ C#中的get 访问器 和set访问器有什么用

C#允许我们对一个属性的get和set访问器使用不同的访问级别修饰符:

class Customer
{
private string name;
...
public string Name
{
get{return this.name;}
internal set(this.name=value;}
}
...
}

一些注意点

属性访问器(get或set)上应用的访问修饰符必须“小于”属性上应用的访问修饰符;“小于”的意思即“更严格”,例如protected小于public。

只能在一个属性访问器(get或set)上指定比属性上的访问修饰符“更小”的访问修饰符。

对于接口中属性的声明,不能给属性访问器(get或set)指定任何访问修饰符,只能默认为public。

属性访问器保护级别的变化规则完全适用于C#的索引器。

热点内容
java返回this 发布:2025-10-20 08:28:16 浏览:645
制作脚本网站 发布:2025-10-20 08:17:34 浏览:936
python中的init方法 发布:2025-10-20 08:17:33 浏览:632
图案密码什么意思 发布:2025-10-20 08:16:56 浏览:821
怎么清理微信视频缓存 发布:2025-10-20 08:12:37 浏览:731
c语言编译器怎么看执行过程 发布:2025-10-20 08:00:32 浏览:1066
邮箱如何填写发信服务器 发布:2025-10-20 07:45:27 浏览:299
shell脚本入门案例 发布:2025-10-20 07:44:45 浏览:160
怎么上传照片浏览上传 发布:2025-10-20 07:44:03 浏览:852
python股票数据获取 发布:2025-10-20 07:39:44 浏览:763